diff options
49 files changed, 881 insertions, 626 deletions
diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf index 15fa71faf..c3409b578 100644 --- a/conf/map/battle/client.conf +++ b/conf/map/battle/client.conf @@ -159,3 +159,8 @@ client_accept_chatdori: 0 // A value of 100 (allowing 100% blank pixels) disables this check. // NOTE: Enabling this option slightly degrades performance. client_emblem_max_blank_percent: 100 + +// Show the MVP EXP reward message for clients 2013-12-23cRagexe and newer? (Note 1) +// kRO removed the packet and this re-enables the message. +// Official: false. +mvp_exp_reward_message: false diff --git a/conf/messages.conf b/conf/messages.conf index a97a755f7..efc8d8a36 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -612,6 +612,9 @@ //670-855 FREE (please start using from the top if you need, leave the 670+ range for new jobs) +// MVP exp message issue clients 2013-12-23cRagexe and newer. +855: Congratulations! You are the MVP! Your reward EXP Points are %u !! + // MvP Tomb 856: Tomb 857: [ ^EE0000%s^000000 ] diff --git a/db/pre-re/map_zone_db.conf b/db/pre-re/map_zone_db.conf index a3d465c0a..b8797a6d3 100644 --- a/db/pre-re/map_zone_db.conf +++ b/db/pre-re/map_zone_db.conf @@ -334,6 +334,19 @@ zones: ( SC_FATALMENACE: "PLAYER" SC_DIMENSIONDOOR: "PLAYER" } + + mapflags: ( + "nobranch", + "noicewall", + "nomemo", + "nosave SavePoint", + "noteleport", + "monster_noteleport", + "nowarpto", + "partylock", + "pvp off", + "src4instance", + ) }, { name: "Memorial Dungeon" /* ETower, Orc's Memory, Nidhoggur's Nest, etc */ @@ -347,6 +360,19 @@ zones: ( SC_FATALMENACE: "PLAYER" SC_DIMENSIONDOOR: "PLAYER" } + + mapflags: ( + "nobranch", + "noicewall", + "nomemo", + "nosave SavePoint", + "noteleport", + "monster_noteleport", + "nowarpto", + "partylock", + "pvp off", + "src4instance", + ) }, { name: "Towns" diff --git a/db/pre-re/mob_db.conf b/db/pre-re/mob_db.conf index 82501748d..40635cd68 100644 --- a/db/pre-re/mob_db.conf +++ b/db/pre-re/mob_db.conf @@ -57,8 +57,8 @@ mob_db: ( } ViewRange: view range (int, defaults to 1) ChaseRange: chase range (int, defaults to 1) - Size: size (int, defaults to 1) - Race: race (int, defaults to 0) + Size: size (string, defaults to "Size_Medium") + Race: race (string, defaults to "RC_Formless") Element: (type, level) Mode: { CanMove: true/false (bool, defaults to false) diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf index a5c27257f..39ae0b313 100644 --- a/db/pre-re/skill_db.conf +++ b/db/pre-re/skill_db.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2017 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -6041,7 +6041,7 @@ skill_db: ( DamageType: { NoDamage: true } - SkillData2: 3000 + SkillData2: 5000 CoolDown: 0 }, { @@ -6177,18 +6177,7 @@ skill_db: ( } SplashRange: 1 SkillData1: 5000 - SkillData2: { - Lv1: 8000 - Lv2: 9000 - Lv3: 10000 - Lv4: 11000 - Lv5: 12000 - Lv6: 13000 - Lv7: 14000 - Lv8: 15000 - Lv9: 16000 - Lv10: 17000 - } + SkillData2: 30000 CoolDown: 0 Requirements: { SPCost: 20 @@ -17952,7 +17941,7 @@ skill_db: ( SplashRange: 1 KnockBackTiles: 5 AfterCastActDelay: 2000 - SkillData2: 2000 + SkillData2: 5000 CoolDown: 0 Requirements: { HPCost: 10 @@ -24040,16 +24029,11 @@ skill_db: ( } AttackType: "Weapon" SkillData1: { - Lv1: 3500 - Lv2: 4000 - Lv3: 4500 - Lv4: 5000 - Lv5: 5500 - Lv6: 6000 - Lv7: 6500 - Lv8: 7000 - Lv9: 7500 - Lv10: 8000 + Lv1: 5500 + Lv2: 6000 + Lv3: 6500 + Lv4: 7000 + Lv5: 7500 } CoolDown: 2000 Requirements: { @@ -24805,7 +24789,13 @@ skill_db: ( Lv9: 9 Lv10: 10 } - SkillData1: 1000 + SkillData1: { + Lv1: 1000 + Lv2: 2000 + Lv3: 2000 + Lv4: 3000 + Lv5: 3000 + } CoolDown: 3000 Requirements: { SPCost: { diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 67617bec9..b54876b23 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -31571,7 +31571,8 @@ item_db: ( EquipLv: 100 Script: <" bonus bMaxSP,40; - bonus bAgi,-7+min(getequiprefinerycnt(EQI_SHOES),8); + if (getrefine() >= 8) + bonus bAgi, getrefine() - 7; "> }, { diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index ae6f23f01..133cc5337 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -443,6 +443,19 @@ zones: ( SC_FATALMENACE: "PLAYER" SC_DIMENSIONDOOR: "PLAYER" } + + mapflags: ( + "nobranch", + "noicewall", + "nomemo", + "nosave SavePoint", + "noteleport", + "monster_noteleport", + "nowarpto", + "partylock", + "pvp off", + "src4instance", + ) }, { name: "Memorial Dungeon" /* ETower, Orc's Memory, Nidhoggur's Nest, etc */ @@ -456,6 +469,19 @@ zones: ( SC_FATALMENACE: "PLAYER" SC_DIMENSIONDOOR: "PLAYER" } + + mapflags: ( + "nobranch", + "noicewall", + "nomemo", + "nosave SavePoint", + "noteleport", + "monster_noteleport", + "nowarpto", + "partylock", + "pvp off", + "src4instance", + ) }, { name: "Towns" diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index caa92b718..188654cf8 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -57,8 +57,8 @@ mob_db: ( } ViewRange: view range (int, defaults to 1) ChaseRange: chase range (int, defaults to 1) - Size: size (int, defaults to 1) - Race: race (int, defaults to 0) + Size: size (string, defaults to "Size_Medium") + Race: race (string, defaults to "RC_Formless") Element: (type, level) Mode: { CanMove: true/false (bool, defaults to false) diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index 8eb2b40fa..03d35b687 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2017 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -6271,7 +6271,7 @@ skill_db: ( DamageType: { NoDamage: true } - SkillData2: 3000 + SkillData2: 5000 FixedCastTime: 0 }, { @@ -6408,18 +6408,7 @@ skill_db: ( } SplashRange: 3 SkillData1: 5000 - SkillData2: { - Lv1: 8000 - Lv2: 9000 - Lv3: 10000 - Lv4: 11000 - Lv5: 12000 - Lv6: 13000 - Lv7: 14000 - Lv8: 15000 - Lv9: 16000 - Lv10: 17000 - } + SkillData2: 20000 FixedCastTime: 0 Requirements: { SPCost: 20 @@ -18494,7 +18483,7 @@ skill_db: ( SplashRange: 1 KnockBackTiles: 5 AfterCastActDelay: 2000 - SkillData2: 2000 + SkillData2: 5000 FixedCastTime: -1 Requirements: { HPCost: 10 @@ -24690,16 +24679,11 @@ skill_db: ( } AttackType: "Weapon" SkillData1: { - Lv1: 3500 - Lv2: 4000 - Lv3: 4500 - Lv4: 5000 - Lv5: 5500 - Lv6: 6000 - Lv7: 6500 - Lv8: 7000 - Lv9: 7500 - Lv10: 8000 + Lv1: 5500 + Lv2: 6000 + Lv3: 6500 + Lv4: 7000 + Lv5: 7500 } CoolDown: 2000 FixedCastTime: -1 @@ -25464,7 +25448,13 @@ skill_db: ( Lv9: 9 Lv10: 10 } - SkillData1: 1000 + SkillData1: { + Lv1: 1000 + Lv2: 2000 + Lv3: 2000 + Lv4: 3000 + Lv5: 3000 + } CoolDown: 3000 FixedCastTime: -1 Requirements: { diff --git a/doc/mob_db.txt b/doc/mob_db.txt new file mode 100644 index 000000000..29d2ab465 --- /dev/null +++ b/doc/mob_db.txt @@ -0,0 +1,219 @@ +//===== Hercules Documentation =============================== +//= Monster Database +//===== By: ================================================== +//= Hercules Dev Team +//===== Current Version: ===================================== +//= 20170311 +//===== Description: ========================================= +//= Explanation of the mob_db.conf file and structure. +//============================================================ + +mob_db: ( +{ + // ================ Mandatory fields ============================== + Id: ID (int) + SpriteName: "SPRITE_NAME" (string) + Name: "Mob name" (string) + // ================ Optional fields =============================== + JName: "Mob name" (string) + Lv: level (int, defaults to 1) + Hp: health (int, defaults to 1) + Sp: mana (int, defaults to 0) + Exp: basic experience (int, defaults to 0) + JExp: job experience (int, defaults to 0) + AttackRange: attack range (int, defaults to 1) + Attack: [attack1, attack2] (int, defaults to 0) + Def: defence (int, defaults to 0) + Mdef: magic defence (int, defaults to 0) + Stats: { + Str: strength (int, defaults to 0) + Agi: agility (int, defaults to 0) + Vit: vitality (int, defaults to 0) + Int: intelligence (int, defaults to 0) + Dex: dexterity (int, defaults to 0) + Luk: luck (int, defaults to 0) + } + ViewRange: view range (int, defaults to 1) + ChaseRange: chase range (int, defaults to 1) + Size: size (string, defaults to "Size_Medium") + Race: race (string, defaults to "RC_Formless") + Element: (type, level) + Mode: { + CanMove: true/false (bool, defaults to false) + Looter: true/false (bool, defaults to false) + Aggressive: true/false (bool, defaults to false) + Assist: true/false (bool, defaults to false) + CastSensorIdle:true/false (bool, defaults to false) + Boss: true/false (bool, defaults to false) + Plant: true/false (bool, defaults to false) + CanAttack: true/false (bool, defaults to false) + Detector: true/false (bool, defaults to false) + CastSensorChase: true/false (bool, defaults to false) + ChangeChase: true/false (bool, defaults to false) + Angry: true/false (bool, defaults to false) + ChangeTargetMelee: true/false (bool, defaults to false) + ChangeTargetChase: true/false (bool, defaults to false) + TargetWeak: true/false (bool, defaults to false) + NoKnockback: true/false (bool, defaults to false) + } + MoveSpeed: move speed (int, defaults to 0) + AttackDelay: attack delay (int, defaults to 4000) + AttackMotion: attack motion (int, defaults to 2000) + DamageMotion: damage motion (int, defaults to 0) + MvpExp: mvp experience (int, defaults to 0) + MvpDrops: { + AegisName: chance (string: int) + // ... + } + Drops: { + AegisName: chance (string: int) + // ... + } +}, +... +) + +Id: Monster id + +Sprite: Monster name as it is named on client. + Allowed characters: [A-Za-z0-9_] + +Name: Name displaying as output for @ and script commands. + This is the name shown when summon a monster with "--en--" as monster name. + +JName: Name displaying as output for @ and script commands. + When provided, this has preference over Name value. + This is the name shown when summon a monster with "--ja--" as monster name. + +Lv: Monster level + When not specified, becomes 1. + +Hp: Monster Hp + When not specified, becomes 1. + +Sp: Monster Sp + When not specified, becomes 0. + +Exp: Base Experience given by the monster. + When not specified, becomes 0. + +JExp: Job Experience given by the monster. + When not specified, becomes 0. + +AttackRange: Range for monster's attack. + When the range between monster and target is greater than 3 the skill is considered long-range, + otherwise it's a melee range. + When not specified, becomes 1. + +Attack: Attack of the monster, represented in two values: attack1 and attack2. + attack1 is minimal attack for the monster. + attack2, when pre-renewal is set, it's a value that sets maximum attack for monster. + Example: Familiar's attack is "Attack: [68, 77]", that is min attack of 68 and max attack of 77. + attack2, when renewal is set, it's a value added to attack1 to calculate maximum attack for monster. + Example: Familiar's attack is "Attack: [68, 9]", that is min attack of 68 and max attack of 77 (68+9). + When not specified, becomes 0. + +Def: Monster defense to physical attacks. + When not specified, becomes 0. + +Mdef: Monster defense to magical attacks. + When not specified, becomes 0. + +Stats: { + Str: monster strength points (When not specified, becomes 0) + Agi: monster agility points (When not specified, becomes 0) + Vit: monster vitality points (When not specified, becomes 0) + Int: monster intelligence points (When not specified, becomes 0) + Dex: monster dexterity points (When not specified, becomes 0) + Luk: monster luck points (When not specified, becomes 0) +} + +ViewRange: Range for monster's view. + Aggressive monsters will attack when Player is inside view range. + When not specified, becomes 1. + +ChaseRange: Range for monster's chase. + Aggressive and attacking monsters will stop chasing when Player gets outside chase range. + When not specified, becomes 1. + +Size: Sets monster's size. Accepts these constants: + "Size_Small" + "Size_Medium" + "Size_Large" + When not specified, becomes "Size_Medium". + +Race: Sets monster's race. Accepts these constants: + "RC_Formless" + "RC_Undead" + "RC_Brute" + "RC_Plant" + "RC_Insect" + "RC_Fish" + "RC_Demon" + "RC_DemiHuman" + "RC_Angel" + "RC_Dragon" + When not specified, becomes "RC_Formless". + +Element: Monster's element. Sets element type and level. + Required format: ("Element Type", Level). + Accepts these constants for Element Type: + "Ele_Neutral" + "Ele_Water" + "Ele_Earth" + "Ele_Fire" + "Ele_Wind" + "Ele_Poison" + "Ele_Holy" + "Ele_Dark" + "Ele_Ghost" + "Ele_Undead" + Level is an integer. Valid values: 1 ~ 4. + +Mode: Monster AI behaviour. If this block is omitted, monster doesn't react to anything. + All the settings in this group are boolean values, + Default value is false (mode not set) for any missing setting. + See /doc/sample/mob_db_mode_list.txt for more information about monsters Mode types. + +MoveSpeed: Monster's speed. Sets speed (cells/sec). + MoveSpeed is calculated to Hercules with this formula: 1000 / SPEED (CELLS/SEC) + When not specified, becomes 0. + +AttackDelay: Sets time delay between monster attack. Also refered as aspd. + Monster will not be able to do new attack until AttackDelay ends. + If AttackMotion is bigger than AttackDelay, monster will need to wait to AttackMotion delay. + When not specified, becomes 4000. + +AttackMotion: Sets time delay between animation motion. + Monster will not be able to do new attack until AttackMotion ends. + If AttackDelay is bigger than AttackMotion, monster will need to wait to AttackDelay delay. + AttackMotion is calculated to Hercules with this formula: 1000 / ASPD (ATTACKS/SEC) + When not specified, becomes 2000. + +DamageMotion: Sets time delay between damage motion. + When not specified, becomes 2000. + +MvpExp: Base Experience given by the monster to the player who inflict more attack. + Having any value except 0 will trigger MVP banner to the player who inflict more attack. + When not specified, becomes 0. + + +MvpDrops: Sets monster mvp drops list. Requires to have MvpExp to trigger. + Accepted values are AegisName as defined on item_db.conf and a chance. + Chance is an integer from 1 to 10000 (10000 = 100%). + Required format: + MvpDrops: { + AegisName: chance + // ... + } + When not specified, becomes false. + +Drops: Sets monster drops list. + Accepted values are AegisName as defined on item_db.conf and a chance. + Chance is an integer from 1 to 10000 (10000 = 100%). + Required format: + Drops: { + AegisName: chance + // ... + } + When not specified, becomes false. diff --git a/npc/instances/EndlessTower.txt b/npc/instances/EndlessTower.txt index e6947d2a4..f94bc177a 100644 --- a/npc/instances/EndlessTower.txt +++ b/npc/instances/EndlessTower.txt @@ -36,13 +36,6 @@ //= 2.4 //========================================================================= -1@tower mapflag src4instance -2@tower mapflag src4instance -3@tower mapflag src4instance -4@tower mapflag src4instance -5@tower mapflag src4instance -6@tower mapflag src4instance - alberta,214,77,6 script Captain Janssen 4_M_SEAMAN,{ if (checkweight(Knife,1) == 0) { mes "^008800Wait here!!"; diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt index 16df567e3..2c583d441 100644 --- a/npc/instances/NydhoggsNest.txt +++ b/npc/instances/NydhoggsNest.txt @@ -33,9 +33,6 @@ //= 1.6 //========================================================================= -1@nyd mapflag src4instance -2@nyd mapflag src4instance - nyd_dun02,100,201,3 script Yggdrasil Gatekeeper HIDDEN_NPC,8,8,{ if (ins_nyd == 0) { mes "A great stone gate stands before you. The sculpture of a terrible dragon spreads its powerful looking wings."; @@ -165,6 +162,10 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper HIDDEN_NPC,8,8,{ close; goto L_Enter; } else { + .@instance = has_instance2("1@nyd"); + if (.@instance >= 0) { + instance_attach(.@instance); + } if (.@ins_nyd_check == 1) { if ('ins_nyd2 == 3 || 'ins_nyd2 == 4) { mes "[Yggdrasil Gatekeeper]"; diff --git a/npc/instances/OrcsMemory.txt b/npc/instances/OrcsMemory.txt index 48412a631..28cc9bbd5 100644 --- a/npc/instances/OrcsMemory.txt +++ b/npc/instances/OrcsMemory.txt @@ -33,9 +33,6 @@ //= 1.7 //========================================================================= -1@orcs mapflag src4instance -2@orcs mapflag src4instance - //== Entrance ============================================== gef_fild10,242,202,0 script Dimensional Gorge Piece 2_MONEMUS,{ diff --git a/npc/instances/SealedShrine.txt b/npc/instances/SealedShrine.txt index 90efe6f5c..de59b7599 100644 --- a/npc/instances/SealedShrine.txt +++ b/npc/instances/SealedShrine.txt @@ -35,9 +35,6 @@ //= 2.3 //========================================================================= -1@cata mapflag src4instance -2@cata mapflag src4instance - //== Sealed Catacomb Entrance ============================== monk_test,309,146,3 script Friar Patrick#edq 4_M_OLDFRIAR,{ cutin "ins_cata_pri_n",2; diff --git a/npc/jobs/2-2/crusader.txt b/npc/jobs/2-2/crusader.txt index 1857539a5..b806d12c3 100644 --- a/npc/jobs/2-2/crusader.txt +++ b/npc/jobs/2-2/crusader.txt @@ -78,20 +78,6 @@ prt_castle,45,169,5 script Senior Crusader 4_M_CRU_OLD,{ mes "As it happened one thousand years ago, evil forces will one day attack in droves in an attempt to take over the world once again."; close; } - else if(CRUS_Q <= 3 && countitem(Patriotism_Marks) && countitem(Sacred_Marks)) { - mes "Ah..."; - mes "I see that you have been called to become a Crusader. We are assured of your will, but now we must test your capabilities."; - next; - mes "[Michael Halig]"; - mes "Meet with Moorenak Miyol who is training in the underground dungeon of the Prontera Castle. Go, and speak with him first."; - next; - delitem 1004, 1; - delitem 1009, 1; - CRUS_Q = 4; - mes "[Michael Halig]"; - mes "Moorenak and others like him will test the limits of your capabilities and help you find your path. Return to me after you have completed their tests..."; - close; - } else if(CRUS_Q == 0) { mes "We are Crusaders, warriors preparing for the Holy War."; mes "What brings you"; @@ -223,6 +209,28 @@ prt_castle,45,169,5 script Senior Crusader 4_M_CRU_OLD,{ else if(CRUS_Q >= 1 && CRUS_Q <= 3) { mes "Have you proven your determination with the task I have given you, or do you possess the items proving that you have received your calling?"; next; + if (countitem(Patriotism_Marks) >= 1 && countitem(Sacred_Marks) >= 1) { + mes "[Michael Halig]"; + mes "Ah..."; + mes "I see that you have been called to become a Crusader. We are assured of your will, but now we must test your capabilities."; + next; + mes "[Michael Halig]"; + mes "Meet with Moorenak Miyol who is training in the underground dungeon of the Prontera Castle. Go, and speak with him first."; + next; + delitem Patriotism_Marks, 1; + delitem Sacred_Marks, 1; + CRUS_Q = 4; + if (questprogress(3006)) { + changequest 3006,3009; + } else if (questprogress(3007)) { + changequest 3007,3009; + } else { + changequest 3008,3009; + } + mes "[Michael Halig]"; + mes "Moorenak and others like him will test the limits of your capabilities and help you find your path. Return to me after you have completed their tests..."; + close; + } switch(CRUS_Q) { case 1: .@item1 = 957; diff --git a/npc/mapflag/gvg.txt b/npc/mapflag/gvg.txt index 18b644615..b30ff1340 100644 --- a/npc/mapflag/gvg.txt +++ b/npc/mapflag/gvg.txt @@ -120,9 +120,5 @@ nguild_prt mapflag gvg_castle //nguild_prt mapflag monster_noteleport // Guild Dungeons ========= -gld_dun01 mapflag gvg_dungeon -gld_dun02 mapflag gvg_dungeon -gld_dun03 mapflag gvg_dungeon -gld_dun04 mapflag gvg_dungeon arug_dun01 mapflag gvg_dungeon schg_dun01 mapflag gvg_dungeon diff --git a/npc/mapflag/nobranch.txt b/npc/mapflag/nobranch.txt index 60db05cf5..4ad59ad67 100644 --- a/npc/mapflag/nobranch.txt +++ b/npc/mapflag/nobranch.txt @@ -306,15 +306,7 @@ que_qaru04 mapflag nobranch que_qaru05 mapflag nobranch // Episode 12 =========== -1@cata mapflag nobranch -2@cata mapflag nobranch e_tower mapflag nobranch -1@tower mapflag nobranch -2@tower mapflag nobranch -3@tower mapflag nobranch -4@tower mapflag nobranch -5@tower mapflag nobranch -6@tower mapflag nobranch // Episode 13.1 =========== mid_camp mapflag nobranch @@ -325,8 +317,6 @@ que_dan01 mapflag nobranch que_dan02 mapflag nobranch schg_que01 mapflag nobranch arug_que01 mapflag nobranch -1@orcs mapflag nobranch -2@orcs mapflag nobranch // Battle Grounds ============== bat_c01 mapflag nobranch @@ -339,8 +329,6 @@ bat_a01 mapflag nobranch bat_a02 mapflag nobranch // Episode 13.2 =========== -1@nyd mapflag nobranch -2@nyd mapflag nobranch manuk mapflag nobranch man_fild02 mapflag nobranch man_in01 mapflag nobranch @@ -377,7 +365,6 @@ s_atelier mapflag nobranch // Episode 14.1 & Dewata =========== mora mapflag nobranch -1@mist mapflag nobranch dewata mapflag nobranch dew_in01 mapflag nobranch @@ -385,16 +372,9 @@ dew_in01 mapflag nobranch malangdo mapflag nobranch mal_in01 mapflag nobranch mal_in02 mapflag nobranch -1@cash mapflag nobranch -1@pump mapflag nobranch -2@pump mapflag nobranch -1@lhz mapflag nobranch malaya mapflag nobranch ma_scene01 mapflag nobranch ma_in01 mapflag nobranch -1@ma_h mapflag nobranch -1@ma_c mapflag nobranch -1@ma_b mapflag nobranch // Episode 14.2 =========== eclage mapflag nobranch @@ -402,7 +382,6 @@ ecl_in01 mapflag nobranch ecl_in02 mapflag nobranch ecl_in03 mapflag nobranch ecl_in04 mapflag nobranch -1@ecl mapflag nobranch ecl_hub01 mapflag nobranch // Episode 14.3 =========== @@ -411,12 +390,6 @@ c_tower3_ mapflag nobranch gl_chyard_ mapflag nobranch gl_cas02_ mapflag nobranch -// Ghost Palace =========== -1@spa mapflag nobranch - -// Sara's Memory Instance =========== -1@sara mapflag nobranch - //evt_zombie mapflag nobranch // Poring War ================== diff --git a/npc/mapflag/noicewall.txt b/npc/mapflag/noicewall.txt index 6c1af1b09..195bec2bb 100644 --- a/npc/mapflag/noicewall.txt +++ b/npc/mapflag/noicewall.txt @@ -159,53 +159,6 @@ nguild_gef mapflag noicewall nguild_pay mapflag noicewall nguild_prt mapflag noicewall -//Endless Tower ================== -1@tower mapflag noicewall -2@tower mapflag noicewall -3@tower mapflag noicewall -4@tower mapflag noicewall -5@tower mapflag noicewall -6@tower mapflag noicewall - -// Orc's Memory =================== -1@orcs mapflag noicewall -2@orcs mapflag noicewall - -// Nidhoggr's Instance =========== -1@nyd mapflag noicewall -2@nyd mapflag noicewall - -// Misty Forest Labyrinth =========== -1@mist mapflag noicewall - -// Octopus Cave =========== -1@cash mapflag noicewall - -// Drain =========== -1@pump mapflag noicewall -2@pump mapflag noicewall - -// Somatology Laboratory =========== -1@lhz mapflag noicewall - -// Bangungot Hospital F2 =========== -1@ma_h mapflag noicewall - -// Buwaya Cave =========== -1@ma_c mapflag noicewall - -// Bakonawa Hideout =========== -1@ma_b mapflag noicewall - -// Inside Eclage =========== -1@ecl mapflag noicewall - -// Ghost Palace =========== -1@spa mapflag noicewall - -// Sara's Memory Instance =========== -1@sara mapflag noicewall - // Poring War ==================== poring_w01 mapflag noicewall poring_w02 mapflag noicewall diff --git a/npc/mapflag/nomemo.txt b/npc/mapflag/nomemo.txt index a0dd66e9d..662bf4c05 100644 --- a/npc/mapflag/nomemo.txt +++ b/npc/mapflag/nomemo.txt @@ -656,18 +656,8 @@ que_qaru03 mapflag nomemo que_qaru04 mapflag nomemo que_qaru05 mapflag nomemo -//Sealed Shrine ================== -1@cata mapflag nomemo -2@cata mapflag nomemo - //Endless Tower ================== e_tower mapflag nomemo -1@tower mapflag nomemo -2@tower mapflag nomemo -3@tower mapflag nomemo -4@tower mapflag nomemo -5@tower mapflag nomemo -6@tower mapflag nomemo // Battle Grounds ================ bat_c01 mapflag nomemo @@ -731,7 +721,6 @@ dic_dun02 mapflag nomemo // Episode 14 ==================== bif_fild01 mapflag nomemo bif_fild02 mapflag nomemo -1@mist mapflag nomemo mora mapflag nomemo dew_dun01 mapflag nomemo dew_dun02 mapflag nomemo @@ -740,13 +729,9 @@ dic_dun03 mapflag nomemo mal_in01 mapflag nomemo mal_in02 mapflag nomemo mal_dun01 mapflag nomemo -1@cash mapflag nomemo -1@pump mapflag nomemo -2@pump mapflag nomemo iz_dun05 mapflag nomemo lhz_dun04 mapflag nomemo que_lhz mapflag nomemo -1@lhz mapflag nomemo gld_dun01_2 mapflag nomemo gld_dun02_2 mapflag nomemo gld_dun03_2 mapflag nomemo @@ -758,9 +743,6 @@ gld2_prt mapflag nomemo ma_scene01 mapflag nomemo ma_in01 mapflag nomemo ma_dun01 mapflag nomemo -1@ma_h mapflag nomemo -1@ma_c mapflag nomemo -1@ma_b mapflag nomemo ma_zif01 mapflag nomemo ma_zif02 mapflag nomemo ma_zif03 mapflag nomemo @@ -776,7 +758,6 @@ ecl_in01 mapflag nomemo ecl_in02 mapflag nomemo ecl_in03 mapflag nomemo ecl_in04 mapflag nomemo -1@ecl mapflag nomemo ecl_tdun01 mapflag nomemo ecl_tdun02 mapflag nomemo ecl_tdun03 mapflag nomemo @@ -791,20 +772,6 @@ c_tower3_ mapflag nomemo gl_chyard_ mapflag nomemo gl_cas02_ mapflag nomemo -//Orc's Memory =================== -1@orcs mapflag nomemo -2@orcs mapflag nomemo - -// Nidhoggr's Instance =========== -1@nyd mapflag nomemo -2@nyd mapflag nomemo - -// Ghost Palace =========== -1@spa mapflag nomemo - -// Sara's Memory Instance =========== -1@sara mapflag nomemo - //evt_zombie mapflag nomemo // Poring War ==================== diff --git a/npc/mapflag/nopvp.txt b/npc/mapflag/nopvp.txt index 8a396bf69..41127332b 100644 --- a/npc/mapflag/nopvp.txt +++ b/npc/mapflag/nopvp.txt @@ -32,30 +32,6 @@ //= Prevents PvP mode on a map. //========================================================================= -1@cata mapflag pvp off -2@cata mapflag pvp off -1@nyd mapflag pvp off -2@nyd mapflag pvp off -1@orcs mapflag pvp off -2@orcs mapflag pvp off -1@tower mapflag pvp off -2@tower mapflag pvp off -3@tower mapflag pvp off -4@tower mapflag pvp off -5@tower mapflag pvp off -6@tower mapflag pvp off -1@mist mapflag pvp off -1@cash mapflag pvp off -1@pump mapflag pvp off -2@pump mapflag pvp off -1@lhz mapflag pvp off -1@ma_h mapflag pvp off -1@ma_c mapflag pvp off -1@ma_b mapflag pvp off -1@ecl mapflag pvp off -1@spa mapflag pvp off -1@sara mapflag pvp off - bat_a01 mapflag pvp off bat_a02 mapflag pvp off bat_b01 mapflag pvp off diff --git a/npc/mapflag/nosave.txt b/npc/mapflag/nosave.txt index 3465cc0c3..8137e500b 100644 --- a/npc/mapflag/nosave.txt +++ b/npc/mapflag/nosave.txt @@ -281,18 +281,8 @@ que_qaru03 mapflag nosave SavePoint que_qaru04 mapflag nosave SavePoint que_qaru05 mapflag nosave SavePoint -// Sealed Shrine ================== -1@cata mapflag nosave SavePoint -2@cata mapflag nosave SavePoint - // Endless Tower ================== e_tower mapflag nosave SavePoint -1@tower mapflag nosave SavePoint -2@tower mapflag nosave SavePoint -3@tower mapflag nosave SavePoint -4@tower mapflag nosave SavePoint -5@tower mapflag nosave SavePoint -6@tower mapflag nosave SavePoint // Battle Grounds ============== bat_c01 mapflag nosave SavePoint @@ -312,45 +302,8 @@ schg_dun01 mapflag nosave SavePoint arug_que01 mapflag nosave SavePoint arug_dun01 mapflag nosave SavePoint -// Orc's Memory =================== -1@orcs mapflag nosave SavePoint -2@orcs mapflag nosave SavePoint - -// Nidhoggr's Instance =========== -1@nyd mapflag nosave SavePoint -2@nyd mapflag nosave SavePoint - -// Misty Forest Labyrinth =========== -1@mist mapflag nosave SavePoint - -// Octopus Cave =========== -1@cash mapflag nosave SavePoint - -// Drain =========== -1@pump mapflag nosave SavePoint -2@pump mapflag nosave SavePoint - // Somatology Laboratory =========== que_lhz mapflag nosave SavePoint -1@lhz mapflag nosave SavePoint - -// Bangungot Hospital F2 =========== -1@ma_h mapflag nosave SavePoint - -// Buwaya Cave =========== -1@ma_c mapflag nosave SavePoint - -// Bakonawa Hideout =========== -1@ma_b mapflag nosave SavePoint - -// Inside Eclage =========== -1@ecl mapflag nosave SavePoint - -// Ghost Palace =========== -1@spa mapflag nosave SavePoint - -// Sara's Memory Instance =========== -1@sara mapflag nosave SavePoint //evt_zombie mapflag nosave SavePoint diff --git a/npc/mapflag/noteleport.txt b/npc/mapflag/noteleport.txt index 8b1109ef1..700964da4 100644 --- a/npc/mapflag/noteleport.txt +++ b/npc/mapflag/noteleport.txt @@ -368,26 +368,8 @@ que_qaru04 mapflag monster_noteleport que_qaru05 mapflag noteleport que_qaru05 mapflag monster_noteleport -//Sealed Shrine ================== -1@cata mapflag noteleport -1@cata mapflag monster_noteleport -2@cata mapflag noteleport -2@cata mapflag monster_noteleport - //Endless Tower ================== e_tower mapflag noteleport -1@tower mapflag noteleport -1@tower mapflag monster_noteleport -2@tower mapflag noteleport -2@tower mapflag monster_noteleport -3@tower mapflag noteleport -3@tower mapflag monster_noteleport -4@tower mapflag noteleport -4@tower mapflag monster_noteleport -5@tower mapflag noteleport -5@tower mapflag monster_noteleport -6@tower mapflag noteleport -6@tower mapflag monster_noteleport // Battle Grounds ============== bat_c01 mapflag noteleport @@ -413,29 +395,13 @@ bra_in01 mapflag noteleport dic_in01 mapflag noteleport // Episode 14 ==================== -1@mist mapflag noteleport -1@mist mapflag monster_noteleport dew_in01 mapflag noteleport mal_in01 mapflag noteleport mal_in02 mapflag noteleport -1@cash mapflag noteleport -1@cash mapflag monster_noteleport -1@pump mapflag noteleport -1@pump mapflag monster_noteleport -2@pump mapflag noteleport -2@pump mapflag monster_noteleport que_lhz mapflag noteleport que_lhz mapflag monster_noteleport -1@lhz mapflag noteleport -1@lhz mapflag monster_noteleport ma_scene01 mapflag noteleport ma_in01 mapflag noteleport -1@ma_h mapflag noteleport -1@ma_h mapflag monster_noteleport -1@ma_c mapflag noteleport -1@ma_c mapflag monster_noteleport -1@ma_b mapflag noteleport -1@ma_b mapflag monster_noteleport ma_zif01 mapflag noteleport ma_zif02 mapflag noteleport ma_zif03 mapflag noteleport @@ -449,35 +415,13 @@ ecl_in01 mapflag noteleport ecl_in02 mapflag noteleport ecl_in03 mapflag noteleport ecl_in04 mapflag noteleport -1@ecl mapflag noteleport -1@ecl mapflag monster_noteleport ecl_hub01 mapflag noteleport dali mapflag noteleport dali02 mapflag noteleport -//Orc's Memory =================== -1@orcs mapflag noteleport -1@orcs mapflag monster_noteleport -2@orcs mapflag noteleport -2@orcs mapflag monster_noteleport - // Yggdrasil Dungeon ============= nyd_dun02 mapflag noteleport -// Nidhoggr's Instance =========== -1@nyd mapflag noteleport -1@nyd mapflag monster_noteleport -2@nyd mapflag noteleport -2@nyd mapflag monster_noteleport - -// Ghost Palace =========== -1@spa mapflag noteleport -1@spa mapflag monster_noteleport - -// Sara's Memory Instance =========== -1@sara mapflag noteleport -1@sara mapflag monster_noteleport - //evt_zombie mapflag noteleport // Poring War ==================== diff --git a/npc/mapflag/nowarpto.txt b/npc/mapflag/nowarpto.txt index 34d093ae2..783dc8cc9 100644 --- a/npc/mapflag/nowarpto.txt +++ b/npc/mapflag/nowarpto.txt @@ -115,18 +115,8 @@ que_qaru03 mapflag nowarpto que_qaru04 mapflag nowarpto que_qaru05 mapflag nowarpto -//Sealed Shrine ================== -1@cata mapflag nowarpto -2@cata mapflag nowarpto - //Endless Tower ================== e_tower mapflag nowarpto -1@tower mapflag nowarpto -2@tower mapflag nowarpto -3@tower mapflag nowarpto -4@tower mapflag nowarpto -5@tower mapflag nowarpto -6@tower mapflag nowarpto // Battle Grounds ============== bat_c01 mapflag nowarpto @@ -160,17 +150,6 @@ splendide mapflag nowarpto spl_fild01 mapflag nowarpto spl_in01 mapflag nowarpto -//Orc's Memory =================== -1@orcs mapflag nowarpto -2@orcs mapflag nowarpto - -// Nidhoggr's Instance =========== -1@nyd mapflag nowarpto -2@nyd mapflag nowarpto - -// Ghost Palace =========== -1@spa mapflag nowarpto - // Poring War ==================== poring_w01 mapflag nowarpto poring_w02 mapflag nowarpto diff --git a/npc/mapflag/partylock.txt b/npc/mapflag/partylock.txt index 9e604fedc..1aa9d4991 100644 --- a/npc/mapflag/partylock.txt +++ b/npc/mapflag/partylock.txt @@ -33,54 +33,3 @@ //= Blocks all party modifications on a map: //= /organize, /leave, /invite, @changeleader //========================================================================= - -// Sealed Shrine ================== -1@cata mapflag partylock -2@cata mapflag partylock - -// Endless Tower ================== -1@tower mapflag partylock -2@tower mapflag partylock -3@tower mapflag partylock -4@tower mapflag partylock -5@tower mapflag partylock -6@tower mapflag partylock - -// Orc's Memory =================== -1@orcs mapflag partylock -2@orcs mapflag partylock - -// Nidhoggr's Instance =========== -1@nyd mapflag partylock -2@nyd mapflag partylock - -// Misty Forest Labyrinth =========== -1@mist mapflag partylock - -// Octopus Cave =========== -1@cash mapflag partylock - -// Drain =========== -1@pump mapflag partylock -2@pump mapflag partylock - -// Somatology Laboratory =========== -1@lhz mapflag partylock - -// Bangungot Hospital F2 =========== -1@ma_h mapflag partylock - -// Buwaya Cave =========== -1@ma_c mapflag partylock - -// Bakonawa Hideout =========== -1@ma_b mapflag partylock - -// Inside Eclage =========== -1@ecl mapflag partylock - -// Ghost Palace =========== -1@spa mapflag partylock - -// Sara's Memory Instance =========== -1@sara mapflag partylock diff --git a/npc/mapflag/zone.txt b/npc/mapflag/zone.txt index cb73a32ec..b90116911 100644 --- a/npc/mapflag/zone.txt +++ b/npc/mapflag/zone.txt @@ -75,37 +75,6 @@ prt_are_in mapflag zone Izlude Battle Arena 1@nyd mapflag zone Memorial Dungeon 2@nyd mapflag zone Memorial Dungeon -// Misty Forest Labyrinth =========== -1@mist mapflag zone Memorial Dungeon - -// Octopus Cave =========== -1@cash mapflag zone Memorial Dungeon - -// Drain =========== -1@pump mapflag zone Memorial Dungeon -2@pump mapflag zone Memorial Dungeon - -// Somatology Laboratory =========== -1@lhz mapflag zone Memorial Dungeon - -// Bangungot Hospital F2 =========== -1@ma_h mapflag zone Memorial Dungeon - -// Buwaya Cave =========== -1@ma_c mapflag zone Memorial Dungeon - -// Bakonawa Hideout =========== -1@ma_b mapflag zone Memorial Dungeon - -// Inside Eclage =========== -1@ecl mapflag zone Memorial Dungeon - -// Ghost Palace =========== -1@spa mapflag zone Memorial Dungeon - -// Sara's Memory Instance =========== -1@sara mapflag zone Memorial Dungeon - //Towns alberta mapflag zone Towns aldebaran mapflag zone Towns diff --git a/npc/pre-re/mapflag/gvg.txt b/npc/pre-re/mapflag/gvg.txt new file mode 100644 index 000000000..39be0ee7b --- /dev/null +++ b/npc/pre-re/mapflag/gvg.txt @@ -0,0 +1,41 @@ +//================= Hercules Script ======================================= +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2017 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +//= Mapflag: Guild versus Guild mode. +//================= Current Version ======================================= +//= 1.0 +//================= Description =========================================== +//= Players can attack other guilds, and will have their guild +//= icons shown. WoE damage reductions will also take place. +//= gvg: Turns on GvG mode +//= gvg_castle: Describes castle maps for WoE. +//========================================================================= + +// Guild Dungeons ========= +gld_dun01 mapflag gvg_dungeon +gld_dun02 mapflag gvg_dungeon +gld_dun03 mapflag gvg_dungeon +gld_dun04 mapflag gvg_dungeon diff --git a/npc/pre-re/scripts_main.conf b/npc/pre-re/scripts_main.conf index 9381497ec..dda475310 100644 --- a/npc/pre-re/scripts_main.conf +++ b/npc/pre-re/scripts_main.conf @@ -62,6 +62,7 @@ npc_global_list: ( //- Pre-Renewal Script Files - @include "npc/pre-re/scripts.conf" @include "npc/pre-re/scripts_jobs.conf" +@include "npc/pre-re/scripts_mapflags.conf" @include "npc/pre-re/scripts_monsters.conf" @include "npc/pre-re/scripts_warps.conf" diff --git a/npc/pre-re/scripts_mapflags.conf b/npc/pre-re/scripts_mapflags.conf new file mode 100644 index 000000000..03c798aa6 --- /dev/null +++ b/npc/pre-re/scripts_mapflags.conf @@ -0,0 +1,30 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2017 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +//= Map Flags +//========================================================================= + +"npc/pre-re/mapflag/gvg.txt", diff --git a/npc/re/instances/BakonawaLake.txt b/npc/re/instances/BakonawaLake.txt index 5e2ae7f33..2868cc589 100644 --- a/npc/re/instances/BakonawaLake.txt +++ b/npc/re/instances/BakonawaLake.txt @@ -33,8 +33,6 @@ //= 1.1 //========================================================================= -1@ma_b mapflag src4instance - ma_scene01,174,179,4 script Taho 4_M_DEWZATIMAN,{ disable_items; if (checkweight(Knife,1) == 0) { diff --git a/npc/re/instances/BangungotHospital.txt b/npc/re/instances/BangungotHospital.txt index 1504f892f..3962ee4fa 100644 --- a/npc/re/instances/BangungotHospital.txt +++ b/npc/re/instances/BangungotHospital.txt @@ -33,8 +33,6 @@ //= 1.1 //========================================================================= -1@ma_h mapflag src4instance - //== Instance Creation ===================================== ma_dun01,147,10,5 script Nurse#ma_dun01 4_F_NURSE,{ if (BaseLevel < 100) end; diff --git a/npc/re/instances/BuwayaCave.txt b/npc/re/instances/BuwayaCave.txt index 242d0a8e4..859d6bd85 100644 --- a/npc/re/instances/BuwayaCave.txt +++ b/npc/re/instances/BuwayaCave.txt @@ -33,8 +33,6 @@ //= 1.0 //========================================================================= -1@ma_c mapflag src4instance - ma_fild02,312,317,5 script Guard#buwaya_cave 4_MAL_SOLDIER,{ if (BaseLevel < 130) { mes "[Guard]"; diff --git a/npc/re/instances/HazyForest.txt b/npc/re/instances/HazyForest.txt index 7f85fee50..c649171f8 100644 --- a/npc/re/instances/HazyForest.txt +++ b/npc/re/instances/HazyForest.txt @@ -33,8 +33,6 @@ //= 1.1 //========================================================================= -1@mist mapflag src4instance - //== Instance Creation ===================================== bif_fild01,158,340,5 script Laphine Soldier#mist 4_M_FAIRYSOLDIER,{ diff --git a/npc/re/instances/MalangdoCulvert.txt b/npc/re/instances/MalangdoCulvert.txt index 164caf548..1bd76aedb 100644 --- a/npc/re/instances/MalangdoCulvert.txt +++ b/npc/re/instances/MalangdoCulvert.txt @@ -35,9 +35,6 @@ //= 1.1 //========================================================================= -1@pump mapflag src4instance -2@pump mapflag src4instance - //== Quest NPCs ============================================ mal_in01,172,28,2 script Albo#mal 4_CAT_SAILOR5,{ if (checkweight(Knife,1) == 0) { diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt index bf099cd2d..9f3f29fdf 100644 --- a/npc/re/instances/OldGlastHeim.txt +++ b/npc/re/instances/OldGlastHeim.txt @@ -36,8 +36,6 @@ //================= Current Version ======================================= //= 1.2 //========================================================================= -1@gl_k mapflag src4instance -2@gl_k mapflag src4instance glast_01,204,273,6 script Hugin#ghinstance 4_M_SAGE_C,{ if (BaseLevel < 130) { // iRO text diff --git a/npc/re/instances/WolfchevLaboratory.txt b/npc/re/instances/WolfchevLaboratory.txt index e88ec4332..51e2f8a06 100644 --- a/npc/re/instances/WolfchevLaboratory.txt +++ b/npc/re/instances/WolfchevLaboratory.txt @@ -33,8 +33,6 @@ //= 1.0.2 //========================================================================= -1@lhz mapflag src4instance - //== Giacomo Girolam ======================================= lighthalzen,303,303,6 script Giacomo Girolamo#kiup2 4_M_KHMAN,3,3,{ if ((MaxWeight - Weight) < 1000 || !checkweight(Knife, 1)) { diff --git a/npc/re/instances/ghost_palace.txt b/npc/re/instances/ghost_palace.txt index b1a8f3c10..6e77db2f8 100644 --- a/npc/re/instances/ghost_palace.txt +++ b/npc/re/instances/ghost_palace.txt @@ -30,7 +30,6 @@ //================= Current Version ======================================= //= 1.1 //========================================================================= -1@spa mapflag src4instance dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{ if (BaseLevel < 120) { diff --git a/npc/re/instances/octopus_cave.txt b/npc/re/instances/octopus_cave.txt index b09d243ab..b134742c9 100644 --- a/npc/re/instances/octopus_cave.txt +++ b/npc/re/instances/octopus_cave.txt @@ -33,8 +33,6 @@ //= 1.1 //========================================================================= -1@cash mapflag src4instance - //== Instance Creation ===================================== mal_dun01,151,235,5 script Starfish 4_ASTER,{ diff --git a/npc/re/instances/saras_memory.txt b/npc/re/instances/saras_memory.txt index 2b3b4f2c0..38b598d5b 100644 --- a/npc/re/instances/saras_memory.txt +++ b/npc/re/instances/saras_memory.txt @@ -37,7 +37,6 @@ //================= Current Version ======================================= //= 1.1 //========================================================================= -1@sara mapflag src4instance dali,130,107,5 script Leon the Adventurer#Sara 4_M_DST_GRAND,{ // instance CD check only at the Dimensional Device mes("[Leon the Adventurer]"); diff --git a/npc/re/mapflag/gvg.txt b/npc/re/mapflag/gvg.txt new file mode 100644 index 000000000..2e0e85f32 --- /dev/null +++ b/npc/re/mapflag/gvg.txt @@ -0,0 +1,41 @@ +//================= Hercules Script ======================================= +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2017 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +//= Mapflag: Guild versus Guild mode. +//================= Current Version ======================================= +//= 1.0 +//================= Description =========================================== +//= Players can attack other guilds, and will have their guild +//= icons shown. WoE damage reductions will also take place. +//= gvg: Turns on GvG mode +//= gvg_castle: Describes castle maps for WoE. +//========================================================================= + +// Hall of the Abyss ====== +gld2_ald mapflag gvg_dungeon +gld2_gef mapflag gvg_dungeon +gld2_pay mapflag gvg_dungeon +gld2_prt mapflag gvg_dungeon diff --git a/npc/re/mapflag/zone.txt b/npc/re/mapflag/zone.txt index a6cfd95f1..24ffce665 100644 --- a/npc/re/mapflag/zone.txt +++ b/npc/re/mapflag/zone.txt @@ -32,6 +32,41 @@ //= Flags maps as part of zones defined in map_zone_db.txt //========================================================================= +// Misty Forest Labyrinth =========== +1@mist mapflag zone Memorial Dungeon + +// Octopus Cave =========== +1@cash mapflag zone Memorial Dungeon + +// Drain =========== +1@pump mapflag zone Memorial Dungeon +2@pump mapflag zone Memorial Dungeon + +// Somatology Laboratory =========== +1@lhz mapflag zone Memorial Dungeon + +// Bangungot Hospital F2 =========== +1@ma_h mapflag zone Memorial Dungeon + +// Buwaya Cave =========== +1@ma_c mapflag zone Memorial Dungeon + +// Bakonawa Hideout =========== +1@ma_b mapflag zone Memorial Dungeon + +// Inside Eclage =========== +1@ecl mapflag zone Memorial Dungeon + +// Old Glast Heim =========== +1@gl_k mapflag zone Memorial Dungeon +2@gl_k mapflag zone Memorial Dungeon + +// Ghost Palace =========== +1@spa mapflag zone Memorial Dungeon + +// Sara's Memory Instance =========== +1@sara mapflag zone Memorial Dungeon + // WoE:TE te_prt_gld mapflag zone WoE TE te_prtcas01 mapflag zone WoE TE diff --git a/npc/re/scripts_mapflags.conf b/npc/re/scripts_mapflags.conf index 8727d9b44..570294c47 100644 --- a/npc/re/scripts_mapflags.conf +++ b/npc/re/scripts_mapflags.conf @@ -28,4 +28,5 @@ //= Map Flags //========================================================================= +"npc/re/mapflag/gvg.txt", "npc/re/mapflag/zone.txt", diff --git a/npc/re/woe-fe/invest_main.txt b/npc/re/woe-fe/invest_main.txt index c912444cc..d743225df 100644 --- a/npc/re/woe-fe/invest_main.txt +++ b/npc/re/woe-fe/invest_main.txt @@ -107,16 +107,16 @@ function script F_Invest_Status { return 0; // Open for investments. - if (.@day >= 3 && (.@day < 5 || (.@day == 5 && .@hour <= 12))) + if (.@day >= WEDNESDAY && (.@day < FRIDAY || (.@day == FRIDAY && .@hour <= 12))) return 1; // Investments closed, calculating results. - if (.@day == 5 && .@hour == 12 && .@minute < 35) + if (.@day == FRIDAY && .@hour == 12 && .@minute < 35) return 2; // Calculations complete, dungeons open. - if ((.@day == 5 && (.@hour > 12 || (.@hour == 12 && .@minute >= 35))) || .@day > 5 || - .@day < 2 || (.@day == 2 && .@hour < 20)) + if ((.@day == FRIDAY && (.@hour > 12 || (.@hour == 12 && .@minute >= 35))) || .@day > FRIDAY || + .@day < TUESDAY || (.@day == TUESDAY && .@hour < 20)) return 3; // Dungeons closed. @@ -273,14 +273,14 @@ OnCalculate: else setd "$"+.@cas$[.@i]+"_invest_result",1; } - // No further actions if 20,000,000z isn't reached. - if (!.@total_2000) - end; // No further actions if any realm hits 70,000,000z. if (.@total_7000) { $2011_agit_invest = 4; end; } + // No further actions if 20,000,000z isn't reached. + if (!.@total_2000) + end; // Otherwise, highest investment above 20,000,000z opens Hall of Abyss. .@max = .@funds[0]; for(.@i = 1; .@i<4; ++.@i) { @@ -882,7 +882,7 @@ OnAgitInvest: close; } case 3: - if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 1000) { + if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "- Currently you're carrying -"; mes "- too many items with you. -"; mes "- Please try again after you -"; @@ -1126,7 +1126,7 @@ OnAgitInvest: next; switch(select("Invest for gate connection", "Deepest Layer Dungeon Access", "Abyss Gate Access", "Cancel")) { case 1: - if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 1000) { + if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "[Gate Manager]"; mes "You have too many items to receive the Thank You Ticket as a small gift for your investment."; mes "Please come back after making room in your inventory."; @@ -1401,27 +1401,48 @@ malangdo,218,123,1 script Namis#invest 4_CAT_SAILOR2,4,4,{ "Piece of Thanatos' armor","I hear Dragon Scales are tough 02","The identity of the creepy eye","If only I could see!"; .@i = select(implode(.@event1$[0],":"))-1; switch(.@i+1) { - case 1: callsub L_Check,"2 Pieces of Queen's Wing",6326,2,"Wings of the Insect Queen? What a pitiful name. I would've given some cool names!",.@event1$[.@i]; - case 2: callsub L_Check,"2 Broken Crowns",7754,2,"For crying out loud! Those cats working on these events must be playing around. Can't they think of a better name?",.@event1$[.@i]; - case 3: callsub L_Check,"2 Fire Dragon Scales",7451,2,"Dragon scales? Well... I guess they are tough. But what are they going to use them for?",.@event1$[.@i]; - case 4: callsub L_Check,"3 Mother's Nightmares",7020,3,"Even though I don't have the authority to find out, I wonder what they're doing with the collected items?",.@event1$[.@i]; - case 5: callsub L_Check,"5 Gemstones",7300,5,"Something useful for a change. The ore will end up as nice pieces of jewelry.",.@event1$[.@i]; - case 6: callsub L_Check,"5 Heroic Emblems",968,5,"Good, good. This is the kind of name I wanted!",.@event1$[.@i]; - case 7: callsub L_Check,"3 Taeguk Plates",7169,3,"Taking in something like this, maybe they're up to something dangerous.",.@event1$[.@i]; - case 8: callsub L_Check,"3 Broken Pharaoh Symbols and 3 Tutankhamen's Masks",7113,3,"I hear the pyramids are in Morroc, but I've never been there. Some humans call it Morco.",.@event1$[.@i],7114,3; - case 9: callsub L_Check,"2 Pocket Watches",7513,2,"Those lazy merchants, why do they need pocket watches they don't even use?",.@event1$[.@i]; - case 10: callsub L_Check,"3 Young Twigs",7018,3,"Mellow Island has a climate like with where we cats used to live. But the trees die out sometimes due to it being an island.",.@event1$[.@i]; - case 11: callsub L_Check,"5 Rossata Pieces",7211,5,"I guess they collect these because humans have them, but what's the use of researching ancient languages?",.@event1$[.@i]; - case 12: callsub L_Check,"5 Fangs of Garm",7036,5,"Weak humans need sharp weapons, but cats already have nice and sharp claws, so why are we collecting these!!",.@event1$[.@i]; - case 13: callsub L_Check,"3 Baphomet Dolls",750,3,"Baphomet dolls are great for playing around with.",.@event1$[.@i]; - case 14: callsub L_Check,"1 Tiger's Footskin and 5 Tiger Skins",1030,1,"Did you know that tigers are cats too? Therefore, cats are better than tigers.",.@event1$[.@i],1029,5; - case 15: callsub L_Check,"3 Broken Shield Pieces and 3 Shining Spear Blades",7108,3,"I don't know what they want with these.",.@event1$[.@i],7109,3; - case 16: callsub L_Check,"3 Osiris Dolls",751,3,"Shame~ I never got to play with an Osiris doll.",.@event1$[.@i]; - case 17: callsub L_Check,"1 Ice Scale",7562,1,"Mellow Island is a fabulous place to live. But the ships are too hot.",.@event1$[.@i]; - case 18: callsub L_Check,"1 Skeletal Armor Piece",7450,1,"Ewww... Why would they collect something so creepy?",.@event1$[.@i]; - case 19: callsub L_Check,"1 Darkred Scale Piece",6091,1,"Dragon scales? Well... I guess they are tough. But what are they going to use them for?",.@event1$[.@i]; - case 20: callsub L_Check,"2 Wills of Red Darkness",7566,2,"Interesting! Does it scream or something when I poke it in the eye?",.@event1$[.@i]; - case 21: callsub L_Check,"2 Foolishness of the Blind",7021,2,"This blind man is foolish in not knowing that gathering 300 cats cures blindness...",.@event1$[.@i]; + case 1: + callsub(L_Check, "2 Pieces of Queen's Wing", Queen_Wing_Piece, 2, "Wings of the Insect Queen? What a pitiful name. I would've given some cool names!", .@event1$[.@i]); + case 2: + callsub(L_Check, "2 Broken Crowns", Broken_Crown, 2, "For crying out loud! Those cats working on these events must be playing around. Can't they think of a better name?", .@event1$[.@i]); + case 3: + callsub(L_Check, "2 Fire Dragon Scales", Scale_Of_Red_Dragon, 2, "Dragon scales? Well... I guess they are tough. But what are they going to use them for?", .@event1$[.@i]); + case 4: + callsub(L_Check, "3 Mother's Nightmares", Mothers_Nightmare, 3, "Even though I don't have the authority to find out, I wonder what they're doing with the collected items?", .@event1$[.@i]); + case 5: + callsub(L_Check, "5 Gemstones", Gemstone, 5, "Something useful for a change. The ore will end up as nice pieces of jewelry.", .@event1$[.@i]); + case 6: + callsub(L_Check, "5 Heroic Emblems", Voucher_Of_Orcish_Hero, 5, "Good, good. This is the kind of name I wanted!", .@event1$[.@i]); + case 7: + callsub(L_Check, "3 Taeguk Plates", Taegeuk_Plate, 3, "Taking in something like this, maybe they're up to something dangerous.", .@event1$[.@i]); + case 8: + callsub(L_Check, "3 Broken Pharaoh Symbols and 3 Tutankhamen's Masks", Broken_Pharaoh_Symbol, 3, "I hear the pyramids are in Morroc, but I've never been there. Some humans call it Morco.", .@event1$[.@i], Tutankhamens_Mask, 3); + case 9: + callsub(L_Check, "2 Pocket Watches", Pocket_Watch, 2, "Those lazy merchants, why do they need pocket watches they don't even use?", .@event1$[.@i]); + case 10: + callsub(L_Check, "3 Young Twigs", Young_Twig, 3, "Mellow Island has a climate like with where we cats used to live. But the trees die out sometimes due to it being an island.", .@event1$[.@i]); + case 11: + callsub(L_Check, "5 Rossata Pieces", Rojerta_Piece, 5, "I guess they collect these because humans have them, but what's the use of researching ancient languages?", .@event1$[.@i]); + case 12: + callsub(L_Check, "5 Fangs of Garm", Fang_Of_Garm, 5, "Weak humans need sharp weapons, but cats already have nice and sharp claws, so why are we collecting these!!", .@event1$[.@i]); + case 13: + callsub(L_Check, "3 Baphomet Dolls", Baphomet_Doll, 3, "Baphomet dolls are great for playing around with.", .@event1$[.@i]); + case 14: + callsub(L_Check, "1 Tiger's Footskin and 5 Tiger Skins", Tiger_Footskin, 1, "Did you know that tigers are cats too? Therefore, cats are better than tigers.", .@event1$[.@i], Tigers_Skin, 5); + case 15: + callsub(L_Check, "3 Broken Shield Pieces and 3 Shining Spear Blades", Boroken_Shiled_Piece, 3, "I don't know what they want with these.", .@event1$[.@i], Shine_Spear_Blade, 3); + case 16: + callsub(L_Check, "3 Osiris Dolls", Osiris_Doll, 3, "Shame~ I never got to play with an Osiris doll.", .@event1$[.@i]); + case 17: + callsub(L_Check, "1 Ice Scale", Ice_Scale, 1, "Mellow Island is a fabulous place to live. But the ships are too hot.", .@event1$[.@i]); + case 18: + callsub(L_Check, "1 Skeletal Armor Piece", Piece_Of_Bone_Armor, 1, "Ewww... Why would they collect something so creepy?", .@event1$[.@i]); + case 19: + callsub(L_Check, "1 Darkred Scale Piece", Dark_Red_Scale, 1, "Dragon scales? Well... I guess they are tough. But what are they going to use them for?", .@event1$[.@i]); + case 20: + callsub(L_Check, "2 Wills of Red Darkness", Will_Of_Darkness_, 2, "Interesting! Does it scream or something when I poke it in the eye?", .@event1$[.@i]); + case 21: + callsub(L_Check, "2 Foolishness of the Blind", Foolishness_Of_Blind, 2, "This blind man is foolish in not knowing that gathering 300 cats cures blindness...", .@event1$[.@i]); } case 3: mes "[Namis]"; @@ -1496,21 +1517,36 @@ malangdo,215,119,4 script Thanks Ticket Machine 2_VENDING_MACHINE1,{ mes "The Vending Machine is selling items in the following list."; next; switch(select("Finish", "1 Siege Arrow Quiver A (2 Tickets)", "1 Siege Arrow Quiver S (2 Tickets)", "30 White Potion (12 Tickets)", "30 White Slim Potion (14 Tickets)", "10 Dark Water (20 Tickets)", "20 Siege_Violet_Potion (30 Tickets)", "10 Coldproof Potion (30 Tickets)", "10 Thunderproof Potion (30 Tickets)", "10 Earthproof Potion (30 Tickets)", "10 Fireproof Potion (30 Tickets)", "10 Elemental Converter[Fire] (30 Tickets)")) { - case 1: close; - case 2: callsub L_Purchase,2,12678,1; //Siege_Arrow_Quiver_A - case 3: callsub L_Purchase,2,12677,1; //Siege_Arrow_Quiver_S - case 4: callsub L_Purchase,12,504,30; //White_Potion - case 5: callsub L_Purchase,14,547,30; //White_Slim_Potion - case 6: callsub L_Purchase,20,12020,10; //Water_Of_Darkness - case 7: callsub L_Purchase,30,11547,20; //Woe_Violet_Potion - case 8: callsub L_Purchase,30,12119,10; //Resist_Water - case 9: callsub L_Purchase,30,12121,10; //Resist_Wind - case 10: callsub L_Purchase,30,12120,10; //Resist_Earth - case 11: callsub L_Purchase,30,12118,10; //Resist_Fire - case 12: callsub L_Purchase,30,12114,10,"Elemental Converter[Fire]"; //Elemental_Fire - case 13: callsub L_Purchase,30,12115,10,"Elemental Converter[Water]"; //Elemental_Water - case 14: callsub L_Purchase,30,12117,10,"Elemental Converter[Wind]"; //Elemental_Wind - case 15: callsub L_Purchase,30,12116,10,"Elemental Converter[Earth]"; //Elemental_Earth + case 1: + close; + case 2: + callsub(L_Purchase, 2, Siege_Arrow_Quiver_A, 1); + case 3: + callsub(L_Purchase, 2, Siege_Arrow_Quiver_S, 1); + case 4: + callsub(L_Purchase, 12, White_Potion, 30); + case 5: + callsub(L_Purchase, 14, White_Slim_Potion, 30); + case 6: + callsub(L_Purchase, 20, Water_Of_Darkness, 10); + case 7: + callsub(L_Purchase, 30, Woe_Violet_Potion, 20); + case 8: + callsub(L_Purchase, 30, Resist_Water, 10); + case 9: + callsub(L_Purchase, 30, Resist_Wind, 10); + case 10: + callsub(L_Purchase, 30, Resist_Earth, 10); + case 11: + callsub(L_Purchase, 30, Resist_Fire, 10); + case 12: + callsub(L_Purchase, 30, Elemental_Fire, 10, "Elemental Converter[Fire]"); + case 13: + callsub(L_Purchase, 30, Elemental_Water, 10, "Elemental Converter[Water]"); + case 14: + callsub(L_Purchase, 30, Elemental_Wind, 10, "Elemental Converter[Wind]"); + case 15: + callsub(L_Purchase, 30, Elemental_Earth, 10, "Elemental Converter[Earth]"); } end; case 3: @@ -1520,67 +1556,126 @@ malangdo,215,119,4 script Thanks Ticket Machine 2_VENDING_MACHINE1,{ mes "You don't have enough ^FF0000Invest Thanks Ticket^000000 to proceed."; close; } - delitem Thanks_Invest_Ticket,5; - .@i = rand(1,10000); - if (.@i <= 100) callsub L_Bag,12531,1; //White_Potion_Box - else if (.@i <= 200) callsub L_Bag,12549,1; //White_Slim_Pot_Box2 - else if (.@i <= 250) callsub L_Bag,11549,10; //Woe_Blue_Potion - else if (.@i <= 660) callsub L_Bag,617,1; //Old_Violet_Box - else if (.@i <= 710) callsub L_Bag,12532,1; //Royal_Jelly_Box2 - else if (.@i <= 760) callsub L_Bag,12533,1; //Blue_Herb_Box2 - else if (.@i <= 810) callsub L_Bag,505,5; //Blue_Potion - else if (.@i <= 1110) callsub L_Bag,644,1; //Gift_Box - else if (.@i <= 1120) callsub L_Bag,607,1; //Yggdrasilberry - else if (.@i <= 1130) callsub L_Bag,608,2; //Seed_Of_Yggdrasil - else if (.@i <= 1140) callsub L_Bag,12292,5; //Unripe_Fruit - else if (.@i <= 1150) callsub L_Bag,12293,5; //Dried_Yggdrasilberry - else if (.@i <= 1250) callsub L_Bag,12679,1; //Sg_White_Potion_Box - else if (.@i <= 1471) callsub L_Bag,603,1; //Old_Blue_Box - else if (.@i <= 1571) callsub L_Bag,12550,1,"Poison Bottle Box(30)"; //Poison_Bottle_Box2 - else if (.@i <= 1671) callsub L_Bag,12020,10; //Water_Of_Darkness - else if (.@i <= 1871) callsub L_Bag,12030,5; //Box_Of_Grudge - else if (.@i <= 2071) callsub L_Bag,12031,5; //Sleepy_Box - else if (.@i <= 2371) callsub L_Bag,12033,2; //Box_Of_Sunlight - else if (.@i <= 2571) callsub L_Bag,12114,5,"Elemental Converter[Fire]"; //Elemental_Fire - else if (.@i <= 2771) callsub L_Bag,12115,5,"Elemental Converter[Water]"; //Elemental_Water - else if (.@i <= 2971) callsub L_Bag,12117,5,"Elemental Converter[Wind]"; //Elemental_Wind - else if (.@i <= 3171) callsub L_Bag,12116,5,"Elemental Converter[Earth]"; //Elemental_Earth - else if (.@i <= 3271) callsub L_Bag,12680,1; //Sg_Blue_Potion_Box - else if (.@i <= 3471) callsub L_Bag,12118,5; //Resist_Fire - else if (.@i <= 3671) callsub L_Bag,12119,5; //Resist_Water - else if (.@i <= 3871) callsub L_Bag,12121,5; //Resist_Wind - else if (.@i <= 4071) callsub L_Bag,12120,5; //Resist_Earth - else if (.@i <= 4271) callsub L_Bag,929,20; //Immortal_Heart - else if (.@i <= 4471) callsub L_Bag,1059,20; //Transparent_Cloth - else if (.@i <= 4671) callsub L_Bag,905,20; //Stem - else if (.@i <= 4871) callsub L_Bag,606,10; //Aloebera - else if (.@i <= 5071) callsub L_Bag,609,10; //Amulet - else if (.@i <= 5271) callsub L_Bag,710,2; //Illusion_Flower - else if (.@i <= 5471) callsub L_Bag,576,20; //Prickly_Fruit - else if (.@i <= 5671) callsub L_Bag,621,10; //Bitter_Herb - else if (.@i <= 5871) callsub L_Bag,709,10; //Izidor - else if (.@i <= 6071) callsub L_Bag,605,10; //Anodyne - else if (.@i <= 6171) callsub L_Bag,11548,10; //Woe_White_Potion - else if (.@i <= 6371) callsub L_Bag,706,10; //Four_Leaf_Clover - else if (.@i <= 6571) callsub L_Bag,521,10; //Leaflet_Of_Aloe - else if (.@i <= 6771) callsub L_Bag,707,10; //Singing_Plant - else if (.@i <= 6971) callsub L_Bag,610,10; //Leaf_Of_Yggdrasil - else if (.@i <= 7021) callsub L_Bag,12676,1; //Sg_Violet_Potion_Box - else if (.@i <= 7171) callsub L_Bag,6249,10; //Savage_Meat - else if (.@i <= 7321) callsub L_Bag,6252,10; //Wolf_Blood - else if (.@i <= 7471) callsub L_Bag,6254,10; //Beef_Head_Meat - else if (.@i <= 7621) callsub L_Bag,6253,10; //Cold_Ice - else if (.@i <= 7771) callsub L_Bag,6256,10; //Ice_Fragment - else if (.@i <= 7921) callsub L_Bag,6257,10; //Ice_Crystal - else if (.@i <= 8071) callsub L_Bag,6260,10; //Petti_Tail - else if (.@i <= 8309) callsub L_Bag,7932,20; //Poison_Herb_Nerium - else if (.@i <= 8547) callsub L_Bag,7933,20; //Poison_Herb_Rantana - else if (.@i <= 8785) callsub L_Bag,7934,20; //Poison_Herb_Makulata - else if (.@i <= 9023) callsub L_Bag,7935,20; //Poison_Herb_Seratum - else if (.@i <= 9261) callsub L_Bag,7936,20; //Poison_Herb_Scopolia - else if (.@i <= 9499) callsub L_Bag,7937,20; //Poison_Herb_Amoena - else if (.@i <= 9699) callsub L_Bag,6217,20; //Mandragora_Flowerpot - else callsub L_Bag,12016,10; //Speed_Up_Potion + delitem(Thanks_Invest_Ticket, 5); + .@i = rand(1, 10000); + if (.@i <= 100) + callsub(L_Bag, White_Potion_Box, 1); + else if (.@i <= 200) + callsub(L_Bag, White_Slim_Pot_Box2, 1); + else if (.@i <= 250) + callsub(L_Bag, Woe_Blue_Potion, 10); + else if (.@i <= 660) + callsub(L_Bag, Old_Violet_Box, 1); + else if (.@i <= 710) + callsub(L_Bag, Royal_Jelly_Box2, 1); + else if (.@i <= 760) + callsub(L_Bag, Blue_Herb_Box2, 1); + else if (.@i <= 810) + callsub(L_Bag, Blue_Potion, 5); + else if (.@i <= 1110) + callsub(L_Bag, Gift_Box, 1); + else if (.@i <= 1120) + callsub(L_Bag, Yggdrasilberry, 1); + else if (.@i <= 1130) + callsub(L_Bag, Seed_Of_Yggdrasil, 2); + else if (.@i <= 1140) + callsub(L_Bag, Unripe_Fruit, 5); + else if (.@i <= 1150) + callsub(L_Bag, Dried_Yggdrasilberry, 5); + else if (.@i <= 1250) + callsub(L_Bag, Sg_White_Potion_Box, 1); + else if (.@i <= 1471) + callsub(L_Bag, Old_Blue_Box, 1); + else if (.@i <= 1571) + callsub(L_Bag, Poison_Bottle_Box2, 1, "Poison Bottle Box(30);"); + else if (.@i <= 1671) + callsub(L_Bag, Water_Of_Darkness, 10); + else if (.@i <= 1871) + callsub(L_Bag, Box_Of_Grudge, 5); + else if (.@i <= 2071) + callsub(L_Bag, Sleepy_Box, 5); + else if (.@i <= 2371) + callsub(L_Bag, Box_Of_Sunlight, 2); + else if (.@i <= 2571) + callsub(L_Bag, Elemental_Fire, 5, "Elemental Converter[Fire]"); + else if (.@i <= 2771) + callsub(L_Bag, Elemental_Water, 5, "Elemental Converter[Water]"); + else if (.@i <= 2971) + callsub(L_Bag, Elemental_Earth, 5, "Elemental Converter[Wind]"); + else if (.@i <= 3171) + callsub(L_Bag, Elemental_Wind, 5, "Elemental Converter[Earth]"); + else if (.@i <= 3271) + callsub(L_Bag, Sg_Blue_Potion_Box, 1); + else if (.@i <= 3471) + callsub(L_Bag, Resist_Fire, 5); + else if (.@i <= 3671) + callsub(L_Bag, Resist_Water, 5); + else if (.@i <= 3871) + callsub(L_Bag, Resist_Wind, 5); + else if (.@i <= 4071) + callsub(L_Bag, Resist_Earth, 5); + else if (.@i <= 4271) + callsub(L_Bag, Immortal_Heart, 20); + else if (.@i <= 4471) + callsub(L_Bag, Transparent_Cloth, 20); + else if (.@i <= 4671) + callsub(L_Bag, Stem, 20); + else if (.@i <= 4871) + callsub(L_Bag, Aloebera, 10); + else if (.@i <= 5071) + callsub(L_Bag, Amulet, 10); + else if (.@i <= 5271) + callsub(L_Bag, Illusion_Flower, 2); + else if (.@i <= 5471) + callsub(L_Bag, Prickly_Fruit, 20); + else if (.@i <= 5671) + callsub(L_Bag, Bitter_Herb, 10); + else if (.@i <= 5871) + callsub(L_Bag, Izidor, 10); + else if (.@i <= 6071) + callsub(L_Bag, Anodyne, 10); + else if (.@i <= 6171) + callsub(L_Bag, Woe_White_Potion, 10); + else if (.@i <= 6371) + callsub(L_Bag, Four_Leaf_Clover, 10); + else if (.@i <= 6571) + callsub(L_Bag, Leaflet_Of_Aloe, 10); + else if (.@i <= 6771) + callsub(L_Bag, Singing_Plant, 10); + else if (.@i <= 6971) + callsub(L_Bag, Leaf_Of_Yggdrasil, 10); + else if (.@i <= 7021) + callsub(L_Bag, Sg_Violet_Potion_Box, 1); + else if (.@i <= 7171) + callsub(L_Bag, Savage_Meat, 10); + else if (.@i <= 7321) + callsub(L_Bag, Wolf_Blood, 10); + else if (.@i <= 7471) + callsub(L_Bag, Beef_Head_Meat, 10); + else if (.@i <= 7621) + callsub(L_Bag, Cold_Ice, 10); + else if (.@i <= 7771) + callsub(L_Bag, Ice_Fragment, 10); + else if (.@i <= 7921) + callsub(L_Bag, Ice_Crystal, 10); + else if (.@i <= 8071) + callsub(L_Bag, Petti_Tail, 10); + else if (.@i <= 8309) + callsub(L_Bag, Poison_Herb_Nerium, 20); + else if (.@i <= 8547) + callsub(L_Bag, Poison_Herb_Rantana, 20); + else if (.@i <= 8785) + callsub(L_Bag, Poison_Herb_Makulata, 20); + else if (.@i <= 9023) + callsub(L_Bag, Poison_Herb_Seratum, 20); + else if (.@i <= 9261) + callsub(L_Bag, Poison_Herb_Scopolia, 20); + else if (.@i <= 9499) + callsub(L_Bag, Poison_Herb_Amoena, 20); + else if (.@i <= 9699) + callsub(L_Bag, Mandragora_Flowerpot, 20); + else + callsub(L_Bag, Speed_Up_Potion, 10); end; case 4: mes "Black Paw Jelly Bag Button chosen. Need to insert 50 ^FF0000Invest Thanks Ticket^000000 and a random item will appear."; @@ -1589,75 +1684,142 @@ malangdo,215,119,4 script Thanks Ticket Machine 2_VENDING_MACHINE1,{ mes "You don't have enough ^FF0000Invest Thanks Ticket^000000 to proceed."; close; } - delitem Thanks_Invest_Ticket,50; - .@i = rand(1,10000); - if (.@i <= 100) callsub L_Bag,12531,1; //White_Potion_Box - else if (.@i <= 200) callsub L_Bag,12549,1; //White_Slim_Pot_Box2 - else if (.@i <= 250) callsub L_Bag,11549,20; //Woe_Blue_Potion - else if (.@i <= 450) callsub L_Bag,617,1; //Old_Violet_Box - else if (.@i <= 500) callsub L_Bag,12532,1; //Royal_Jelly_Box2 - else if (.@i <= 550) callsub L_Bag,12533,1; //Blue_Herb_Box2 - else if (.@i <= 600) callsub L_Bag,505,10; //Blue_Potion - else if (.@i <= 800) callsub L_Bag,644,1; //Gift_Box - else if (.@i <= 810) callsub L_Bag,607,2; //Yggdrasilberry - else if (.@i <= 820) callsub L_Bag,608,3; //Seed_Of_Yggdrasil - else if (.@i <= 830) callsub L_Bag,12292,10; //Unripe_Fruit - else if (.@i <= 840) callsub L_Bag,12293,10; //Dried_Yggdrasilberry - else if (.@i <= 940) callsub L_Bag,12679,1; //Sg_White_Potion_Box - else if (.@i <= 1140) callsub L_Bag,603,1; //Old_Blue_Box - else if (.@i <= 1240) callsub L_Bag,12550,1,"Poison Bottle Box(30)"; //Poison_Bottle_Box2 - else if (.@i <= 1340) callsub L_Bag,12020,20; //Water_Of_Darkness - else if (.@i <= 1440) callsub L_Bag,12030,10; //Box_Of_Grudge - else if (.@i <= 1540) callsub L_Bag,12031,10; //Sleepy_Box - else if (.@i <= 1690) callsub L_Bag,12033,4; //Box_Of_Sunlight - else if (.@i <= 1790) callsub L_Bag,12114,10,"Elemental Converter[Fire]"; //Elemental_Fire - else if (.@i <= 1890) callsub L_Bag,12115,10,"Elemental Converter[Water]"; //Elemental_Water - else if (.@i <= 1990) callsub L_Bag,12117,10,"Elemental Converter[Wind]"; //Elemental_Wind - else if (.@i <= 2090) callsub L_Bag,12116,10,"Elemental Converter[Earth]"; //Elemental_Earth - else if (.@i <= 2190) callsub L_Bag,12680,1; //Sg_Blue_Potion_Box - else if (.@i <= 2290) callsub L_Bag,12118,10; //Resist_Fire - else if (.@i <= 2390) callsub L_Bag,12119,10; //Resist_Water - else if (.@i <= 2490) callsub L_Bag,12121,10; //Resist_Wind - else if (.@i <= 2590) callsub L_Bag,12120,10; //Resist_Earth - else if (.@i <= 2690) callsub L_Bag,929,40; //Immortal_Heart - else if (.@i <= 2790) callsub L_Bag,1059,40; //Transparent_Cloth - else if (.@i <= 2890) callsub L_Bag,905,40; //Stem - else if (.@i <= 2990) callsub L_Bag,606,20; //Aloebera - else if (.@i <= 3090) callsub L_Bag,609,20; //Amulet - else if (.@i <= 3190) callsub L_Bag,710,4; //Illusion_Flower - else if (.@i <= 3290) callsub L_Bag,576,40; //Prickly_Fruit - else if (.@i <= 3390) callsub L_Bag,621,20; //Bitter_Herb - else if (.@i <= 3490) callsub L_Bag,709,20; //Izidor - else if (.@i <= 3590) callsub L_Bag,605,20; //Anodyne - else if (.@i <= 3690) callsub L_Bag,11548,20; //Woe_White_Potion - else if (.@i <= 3790) callsub L_Bag,706,20; //Four_Leaf_Clover - else if (.@i <= 3890) callsub L_Bag,521,20; //Leaflet_Of_Aloe - else if (.@i <= 3990) callsub L_Bag,707,20; //Singing_Plant - else if (.@i <= 4090) callsub L_Bag,610,20; //Leaf_Of_Yggdrasil - else if (.@i <= 4140) callsub L_Bag,12676,1; //Sg_Violet_Potion_Box - else if (.@i <= 4240) callsub L_Bag,6249,20; //Savage_Meat - else if (.@i <= 4340) callsub L_Bag,6252,20; //Wolf_Blood - else if (.@i <= 4440) callsub L_Bag,6254,20; //Beef_Head_Meat - else if (.@i <= 4540) callsub L_Bag,6253,20; //Cold_Ice - else if (.@i <= 4640) callsub L_Bag,6256,20; //Ice_Fragment - else if (.@i <= 4740) callsub L_Bag,6257,20; //Ice_Crystal - else if (.@i <= 4840) callsub L_Bag,6260,20; //Petti_Tail - else if (.@i <= 4940) callsub L_Bag,7932,40; //Poison_Herb_Nerium - else if (.@i <= 5040) callsub L_Bag,7933,40; //Poison_Herb_Rantana - else if (.@i <= 5140) callsub L_Bag,7934,40; //Poison_Herb_Makulata - else if (.@i <= 5240) callsub L_Bag,7935,40; //Poison_Herb_Seratum - else if (.@i <= 5340) callsub L_Bag,7936,40; //Poison_Herb_Scopolia - else if (.@i <= 5440) callsub L_Bag,7937,40; //Poison_Herb_Amoena - else if (.@i <= 5540) callsub L_Bag,6217,40; //Mandragora_Flowerpot - else if (.@i <= 6000) callsub L_Bag,12016,20; //Speed_Up_Potion - else if (.@i <= 6500) callsub L_Bag,2483,1; //Siege_Greave - else if (.@i <= 7000) callsub L_Bag,2484,1; //Siege_Boots - else if (.@i <= 7500) callsub L_Bag,2485,1; //Siege_Shoes - else if (.@i <= 8000) callsub L_Bag,2586,1; //Siege_Manteau - else if (.@i <= 8500) callsub L_Bag,2587,1; //Siege_Muffler - else if (.@i <= 9000) callsub L_Bag,15046,1; //Siege_Plate - else if (.@i <= 9500) callsub L_Bag,15047,1; //Siege_Suits - else callsub L_Bag,15048,1; //Siege_Robe + delitem(Thanks_Invest_Ticket, 50); + .@i = rand(1, 10000); + if (.@i <= 100) + callsub(L_Bag, White_Potion_Box, 1); + else if (.@i <= 200) + callsub(L_Bag, White_Slim_Pot_Box2, 1); + else if (.@i <= 250) + callsub(L_Bag, Woe_Blue_Potion, 20); + else if (.@i <= 450) + callsub(L_Bag, Old_Violet_Box, 1); + else if (.@i <= 500) + callsub(L_Bag, Royal_Jelly_Box2, 1); + else if (.@i <= 550) + callsub(L_Bag, Blue_Herb_Box2, 1); + else if (.@i <= 600) + callsub(L_Bag, Blue_Potion, 10); + else if (.@i <= 800) + callsub(L_Bag, Gift_Box, 1); + else if (.@i <= 810) + callsub(L_Bag, Yggdrasilberry, 2); + else if (.@i <= 820) + callsub(L_Bag, Seed_Of_Yggdrasil, 3); + else if (.@i <= 830) + callsub(L_Bag, Unripe_Fruit, 10); + else if (.@i <= 840) + callsub(L_Bag, Dried_Yggdrasilberry, 10); + else if (.@i <= 940) + callsub(L_Bag, Sg_White_Potion_Box, 1); + else if (.@i <= 1140) + callsub(L_Bag, Old_Blue_Box, 1); + else if (.@i <= 1240) + callsub(L_Bag, Poison_Bottle_Box2, 1, "Poison Bottle Box(30)"); + else if (.@i <= 1340) + callsub(L_Bag, Water_Of_Darkness, 20); + else if (.@i <= 1440) + callsub(L_Bag, Box_Of_Grudge, 10); + else if (.@i <= 1540) + callsub(L_Bag, Sleepy_Box, 10); + else if (.@i <= 1690) + callsub(L_Bag, Box_Of_Sunlight, 4); + else if (.@i <= 1790) + callsub(L_Bag, Elemental_Fire, 10, "Elemental Converter[Fire]"); + else if (.@i <= 1890) + callsub(L_Bag, Elemental_Water, 10, "Elemental Converter[Water]"); + else if (.@i <= 1990) + callsub(L_Bag, Elemental_Wind, 10, "Elemental Converter[Wind]"); + else if (.@i <= 2090) + callsub(L_Bag, Elemental_Earth, 10, "Elemental Converter[Earth]"); + else if (.@i <= 2190) + callsub(L_Bag, Sg_Blue_Potion_Box, 1); + else if (.@i <= 2290) + callsub(L_Bag, Resist_Fire, 10); + else if (.@i <= 2390) + callsub(L_Bag, Resist_Water, 10); + else if (.@i <= 2490) + callsub(L_Bag, Resist_Wind, 10); + else if (.@i <= 2590) + callsub(L_Bag, Resist_Earth, 10); + else if (.@i <= 2690) + callsub(L_Bag, Immortal_Heart, 40); + else if (.@i <= 2790) + callsub(L_Bag, Transparent_Cloth, 40); + else if (.@i <= 2890) + callsub(L_Bag, Stem, 40); + else if (.@i <= 2990) + callsub(L_Bag, Aloebera, 20); + else if (.@i <= 3090) + callsub(L_Bag, Amulet, 20); + else if (.@i <= 3190) + callsub(L_Bag, Illusion_Flower, 4); + else if (.@i <= 3290) + callsub(L_Bag, Prickly_Fruit, 40); + else if (.@i <= 3390) + callsub(L_Bag, Bitter_Herb, 20); + else if (.@i <= 3490) + callsub(L_Bag, Izidor, 20); + else if (.@i <= 3590) + callsub(L_Bag, Anodyne, 20); + else if (.@i <= 3690) + callsub(L_Bag, Woe_White_Potion, 20); + else if (.@i <= 3790) + callsub(L_Bag, Four_Leaf_Clover, 20); + else if (.@i <= 3890) + callsub(L_Bag, Leaflet_Of_Aloe, 20); + else if (.@i <= 3990) + callsub(L_Bag, Singing_Plant, 20); + else if (.@i <= 4090) + callsub(L_Bag, Leaf_Of_Yggdrasil, 20); + else if (.@i <= 4140) + callsub(L_Bag, Sg_Violet_Potion_Box, 1); + else if (.@i <= 4240) + callsub(L_Bag, Savage_Meat, 20); + else if (.@i <= 4340) + callsub(L_Bag, Wolf_Blood, 20); + else if (.@i <= 4440) + callsub(L_Bag, Beef_Head_Meat, 20); + else if (.@i <= 4540) + callsub(L_Bag, Cold_Ice, 20); + else if (.@i <= 4640) + callsub(L_Bag, Ice_Fragment, 20); + else if (.@i <= 4740) + callsub(L_Bag, Ice_Crystal, 20); + else if (.@i <= 4840) + callsub(L_Bag, Petti_Tail, 20); + else if (.@i <= 4940) + callsub(L_Bag, Poison_Herb_Nerium, 40); + else if (.@i <= 5040) + callsub(L_Bag, Poison_Herb_Rantana, 40); + else if (.@i <= 5140) + callsub(L_Bag, Poison_Herb_Makulata, 40); + else if (.@i <= 5240) + callsub(L_Bag, Poison_Herb_Seratum, 40); + else if (.@i <= 5340) + callsub(L_Bag, Poison_Herb_Scopolia, 40); + else if (.@i <= 5440) + callsub(L_Bag, Poison_Herb_Amoena, 40); + else if (.@i <= 5540) + callsub(L_Bag, Mandragora_Flowerpot, 40); + else if (.@i <= 6000) + callsub(L_Bag, Speed_Up_Potion, 20); + else if (.@i <= 6500) + callsub(L_Bag, Siege_Greave, 1); + else if (.@i <= 7000) + callsub(L_Bag, Siege_Boots, 1); + else if (.@i <= 7500) + callsub(L_Bag, Siege_Shoes, 1); + else if (.@i <= 8000) + callsub(L_Bag, Siege_Manteau, 1); + else if (.@i <= 8500) + callsub(L_Bag, Siege_Muffler, 1); + else if (.@i <= 9000) + callsub(L_Bag, Siege_Plate, 1); + else if (.@i <= 9500) + callsub(L_Bag, Siege_Suits, 1); + else + callsub(L_Bag, Siege_Robe, 1); end; } end; diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 93f4a323c..c639f2226 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -1633,7 +1633,7 @@ REPLACE INTO `item_db` VALUES ('2472','Shoes_Of_Judgement','Shoes Of Judgement', REPLACE INTO `item_db` VALUES ('2473','Para_Team_Boots4','Eden Group Boots IV','5','0','0','0','0','0','20','0','0','18446744073709551615','63','2','64','0','60',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1; bonus bVit,1; bonus bHPrecovRate,28; bonus bSPrecovRate,12;','',''); REPLACE INTO `item_db` VALUES ('2474','Lehmannza_Shoes','Lehmannza Shoes','5','20','10','500','0','0','3','0','1','18446744073709551615','63','2','64','0','60',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3;','',''); REPLACE INTO `item_db` VALUES ('2475','Ur_Greave','Ur\'s Greaves','5','20','10','900','0','0','32','0','1','128','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPrate,getequiprefinerycnt(EQI_SHOES)-7;','',''); -REPLACE INTO `item_db` VALUES ('2476','Peuz_Greave','Peuz\'s Greaves','5','20','10','900','0','0','32','0','1','128','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,40; bonus bAgi,-7+min(getequiprefinerycnt(EQI_SHOES),8);','',''); +REPLACE INTO `item_db` VALUES ('2476','Peuz_Greave','Peuz\'s Greaves','5','20','10','900','0','0','32','0','1','128','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,40; if (getrefine() >= 8) bonus bAgi, getrefine() - 7;','',''); REPLACE INTO `item_db` VALUES ('2477','Sabah_Shoes','Sapha Shoes','5','20','10','400','0','0','18','0','1','4096','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,30; bonus bLuk,3;','',''); REPLACE INTO `item_db` VALUES ('2478','Nab_Shoes','Nab Shoes','5','20','10','400','0','0','18','0','1','4096','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,3; bonus bInt,2;','',''); REPLACE INTO `item_db` VALUES ('2479','White_Wing_Boots','White Wing Boots','5','20','10','400','0','0','18','0','1','2048','56','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2; bonus2 bSkillUseSP,RA_AIMEDBOLT,10;','',''); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 2beb6c634..881e50497 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -8366,6 +8366,36 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand dbi_destroy(iter); clif->message(fd,line_buff); + if (atcommand->binding_count > 0) { + int i, count_bind = 0; + int gm_lvl = pc_get_group_level(sd); + + for (i = 0; i < atcommand->binding_count; i++) { + if (gm_lvl >= ((type == COMMAND_ATCOMMAND) ? atcommand->binding[i]->group_lv : atcommand->binding[i]->group_lv_char)) { + size_t slen = strlen(atcommand->binding[i]->command); + if (count_bind == 0) { + cur = line_buff; + memset(line_buff, ' ', CHATBOX_SIZE); + line_buff[CHATBOX_SIZE - 1] = 0; + clif->message(fd, "------------------"); + clif->message(fd, "Custom commands:"); + } + if (slen + cur - line_buff >= CHATBOX_SIZE) { + clif->message(fd, line_buff); + cur = line_buff; + memset(line_buff, ' ', CHATBOX_SIZE); + line_buff[CHATBOX_SIZE - 1] = 0; + } + memcpy(cur, atcommand->binding[i]->command, slen); + cur += slen + (10 - slen % 10); + count_bind++; + } + } + if (count_bind > 0) + clif->message(fd, line_buff); // Last Line + count += count_bind; + } + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,274), count); // "%d commands found." clif->message(fd, atcmd_output); diff --git a/src/map/battle.c b/src/map/battle.c index 64fda033f..77bb99730 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7321,6 +7321,7 @@ static const struct battle_data { { "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, }, { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, }, { "max_summoner_parameter", &battle_config.max_summoner_parameter, 120, 10, 10000, }, + { "mvp_exp_reward_message", &battle_config.mvp_exp_reward_message, 0, 0, 1, }, }; #ifndef STATS_OPT_OUT /** @@ -7599,6 +7600,13 @@ void battle_adjust_conf(void) { } #endif +#if PACKETVER < 20131223 + if (battle_config.mvp_exp_reward_message) { + ShowWarning("conf/map/battle/client.conf MVP EXP reward message is enabled but it requires PACKETVER 2013-12-23 or newer, disabling...\n"); + battle_config.mvp_exp_reward_message = 0; + } +#endif + #ifndef CELL_NOSTACK if (battle_config.custom_cell_stack_limit != 1) ShowWarning("Battle setting 'custom_cell_stack_limit' takes no effect as this server was compiled without Cell Stack Limit support.\n"); diff --git a/src/map/battle.h b/src/map/battle.h index c55d5ef19..b7bde1aa9 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -547,6 +547,7 @@ struct Battle_Config { int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs int max_summoner_parameter; // Summoner Max Stats + int mvp_exp_reward_message; }; /* criteria for battle_config.idletime_critera */ diff --git a/src/map/clif.c b/src/map/clif.c index 6897c357a..597a890ae 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7256,6 +7256,13 @@ void clif_mvp_item(struct map_session_data *sd,int nameid) /// 010b <exp>.L void clif_mvp_exp(struct map_session_data *sd, unsigned int exp) { +#if PACKETVER >= 20131223 // Kro removed this packet [Napster] + if (battle_config.mvp_exp_reward_message) { + char e_msg[CHAT_SIZE_MAX]; + sprintf(e_msg, msg_txt(855), exp); + clif->messagecolor_self(sd->fd, COLOR_CYAN, e_msg); // Congratulations! You are the MVP! Your reward EXP Points are %u !! + } +#else int fd; nullpo_retv(sd); @@ -7265,6 +7272,7 @@ void clif_mvp_exp(struct map_session_data *sd, unsigned int exp) WFIFOW(fd,0)=0x10b; WFIFOL(fd,2)=cap_value(exp,0,INT32_MAX); WFIFOSET(fd,packet_len(0x10b)); +#endif } /// Dropped MVP item reward message (ZC_THROW_MVPITEM). diff --git a/src/map/clif.h b/src/map/clif.h index aefba5974..c3a42372a 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -65,6 +65,7 @@ struct view_data; #define MAX_ROULETTE_COLUMNS 9 /** client-defined value **/ #define RGB2BGR(c) (((c) & 0x0000FF) << 16 | ((c) & 0x00FF00) | ((c) & 0xFF0000) >> 16) +#define COLOR_CYAN 0x00ffffU #define COLOR_RED 0xff0000U #define COLOR_GREEN 0x00ff00U #define COLOR_WHITE 0xffffffU diff --git a/src/map/skill.c b/src/map/skill.c index 51a8a28e7..cd7006de0 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2016 Hercules Dev Team + * Copyright (C) 2012-2017 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -7470,8 +7470,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin case NPC_LICK: status_zap(bl, 0, 100); - clif->skill_nodamage(src,bl,skill_id,skill_lv, - sc_start(src,bl,type,(skill_lv*5),skill_lv,skill->get_time2(skill_id,skill_lv))); + clif->skill_nodamage(src, bl, skill_id, skill_lv, + sc_start(src, bl, type, (skill_lv * 20), skill_lv, skill->get_time2(skill_id, skill_lv))); break; case NPC_SUICIDE: |