diff options
m--------- | client-data | 0 | ||||
-rw-r--r-- | world/map/data/012-1.wlk | bin | 31588 -> 31588 bytes | |||
-rw-r--r-- | world/map/db/mob_skill_db.txt | 1 | ||||
-rw-r--r-- | world/map/db/params.txt | 47 | ||||
-rw-r--r-- | world/map/npc/functions/global_event_handler.txt | 3 | ||||
-rw-r--r-- | world/map/npc/items/anchor_stone.txt | 2 | ||||
-rw-r--r-- | world/map/npc/magic/level2-magic-knuckles.txt | 38 |
7 files changed, 48 insertions, 43 deletions
diff --git a/client-data b/client-data -Subproject df06f82c1496dea5e99177c931a1a805abb0e94 +Subproject e97dcd76188549a4d440ae0b62f5128dde585f2 diff --git a/world/map/data/012-1.wlk b/world/map/data/012-1.wlk Binary files differindex 6008bfcd..bad011f4 100644 --- a/world/map/data/012-1.wlk +++ b/world/map/data/012-1.wlk diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt index 82ef11a4..45b49563 100644 --- a/world/map/db/mob_skill_db.txt +++ b/world/map/db/mob_skill_db.txt @@ -129,5 +129,4 @@ //Rick Lime Skills 1196,RickLime@NPC_SUMMONSLAVE_brblowX2,any,198,1,10000,1000,5000,no,self,slavelt,2,1195,0,0,0,0, -1196,RickLime@NPC_SUMMONSLAVE_cloverX1,any,198,1,5000,1000,5000,no,self,slavelt,3,1037,0,0,0,0, 1195,Brainblow@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,always,0,30,0,0,0,0, diff --git a/world/map/db/params.txt b/world/map/db/params.txt index d600b4ad..512d0ac8 100644 --- a/world/map/db/params.txt +++ b/world/map/db/params.txt @@ -28,6 +28,7 @@ NEXTBASEEXP 22 1 NEXTJOBEXP 23 1 Weight 24 1 MaxWeight 25 1 +MaxWeightOverride 27 1 ATK1 41 1 ATK2 42 1 MATK1 43 1 @@ -74,34 +75,36 @@ MUTE_PARTY 1084 1 //MUTE_GUILD 1085 1 AUTOMOD 1086 1 -bMaxHP 6 // MaxHP + n -bMaxSP 8 // MaxSP + n -bStr 13 // STR + n -bAgi 14 // AGI + n -bVit 15 // VIT + n -bInt 16 // INT + n -bDex 17 // DEX + n -bLuk 18 // LUK + n -bAtk 41 // ATK + n (Minimum attack power) -bAtk2 42 // ATK2 + n (Maximum attack power) -bMatk1 43 // MATK1 + n (Maximum magical attack power) -bMatk2 44 // MATK2 + n (Minimum magical attack power) +bMaxHP 6 // MaxHP + n +bMaxSP 8 // MaxSP + n +bStr 13 // STR + n +bAgi 14 // AGI + n +bVit 15 // VIT + n +bInt 16 // INT + n +bDex 17 // DEX + n +bLuk 18 // LUK + n +bMaxWeight 25 // Sets the maximum possible weight to carry to n (bMaxWeight,n;). Note: As a failsafe 1000 is added to n, final weight is n + 1000. +bMaxWeightAdd 26 // Adds n to the maximum possible weight to carry (bMaxWeightAdd,n;). Note: As a failsafe 1000 is added to n, final weight is MaxWeight + n + 1000. +bAtk 41 // ATK + n (Minimum attack power) +bAtk2 42 // ATK2 + n (Maximum attack power) +bMatk1 43 // MATK1 + n (Maximum magical attack power) +bMatk2 44 // MATK2 + n (Minimum magical attack power) // Greatest of MATK1 and MATK2 is taken and becomes MATK1 and MATK2 is set to 0. // So using MATK2 bonus at the moment has no real benefit you only need greater values to reach same as MATK1. // MATK1 += INT + (INT / 5) * (INT / 5); // MATK2 += INT + (INT / 7) * (INT / 7); // The whole magic system is currently handled in serverdata which only uses MATK1 but the magic attack functions // do already exist in servercode only skills must be added there. -bDef 45 // Equipment DEF + n -bDef2 46 // VIT based DEF + n -bMdef 47 // Equipment MDEF + n -bMdef2 48 // INT based MDEF + n -bHit 49 // Hit + n -bFlee 50 // Flee + n -bFlee2 51 // Perfect Dodge + n -bCritical 52 // Critical + n -bAspd 53 // Attack speed + n -bDeaf 70 +bDef 45 // Equipment DEF + n +bDef2 46 // VIT based DEF + n +bMdef 47 // Equipment MDEF + n +bMdef2 48 // INT based MDEF + n +bHit 49 // Hit + n +bFlee 50 // Flee + n +bFlee2 51 // Perfect Dodge + n +bCritical 52 // Critical + n +bAspd 53 // Attack speed + n +bDeaf 70 // Those which can be used with the arrow are only bCritical, bAtkEle, bHit, bAddEle, bAddRace, bAddSize and bAddEff. The other bonuses are ignored. // For more information, have a look here: http://code.google.com/p/eathena/source/browse/trunk/doc/item_bonus.txt diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt index d169f3c7..b1c5917e 100644 --- a/world/map/npc/functions/global_event_handler.txt +++ b/world/map/npc/functions/global_event_handler.txt @@ -19,6 +19,7 @@ OnPCLoginEvent: callfunc "ConvertChristmas21"; // Christmas 2021 callfunc "VaultLogin"; // Mirror Lake Protocol biddings callfunc "VaultLogout"; // Clean some stuff, to be safe + if (WEIGHT_LIMIT) set MaxWeightOverride, WEIGHT_LIMIT; // If this char var set, override max weight (tradebots, etc) // add more here set @login_event, 2; end; @@ -45,7 +46,7 @@ OnPCDieEvent: end; OnPCLogoutEvent: -// if (getnpcid("#Upmarmu#" + getcharid(3)) >= 1) addnpctimer 0, "#Upmarmu#" + getcharid(3) + "::OnDestroy"; // @upmarmu_spell_npc_name$ is already lost at this point so it must be done like this + if (getnpcid("#Upmarmu#" + getcharid(3)) >= 1) addnpctimer 0, "#Upmarmu#" + getcharid(3) + "::OnDestroy"; // @upmarmu_spell_npc_name$ is already lost at this point so it must be done like this callfunc "VaultLogout"; end; diff --git a/world/map/npc/items/anchor_stone.txt b/world/map/npc/items/anchor_stone.txt index d63632af..c1ea722b 100644 --- a/world/map/npc/items/anchor_stone.txt +++ b/world/map/npc/items/anchor_stone.txt @@ -20,7 +20,7 @@ L_AnchorStone: "Yes", L_AS_Yes; L_AS_Yes: - set AnchorStoneDest, getmaphash(getmap()); // since a hash could be negative I take a seperate variable for that since shifting would destroy the sign bit and create a different hash + set AnchorStoneDest, getmaphash(getmap()); // since a hash could be negative I take a separate variable for that since shifting would destroy the sign bit and create a different hash set AnchorStoneDestCoord, gety() << AS_Y_SHIFT | getx() << AS_X_SHIFT; delitem AnchorStone, 1; diff --git a/world/map/npc/magic/level2-magic-knuckles.txt b/world/map/npc/magic/level2-magic-knuckles.txt index a67941cf..92ee07a5 100644 --- a/world/map/npc/magic/level2-magic-knuckles.txt +++ b/world/map/npc/magic/level2-magic-knuckles.txt @@ -1,7 +1,7 @@ -|script|magic-knuckles|32767 { if @_U_BLOCK >= 1 goto L_Still_Exhausted; -/* + set @upmarmu_spell_npc_name$, "#Upmarmu#" + getcharid(3); // make a unique puppet name for every player set .upmarmu_spell_npc, getnpcid(@upmarmu_spell_npc_name$); if ( .upmarmu_spell_npc >= 1 ) goto L_NPC_Exists; // if this npc already exist reuse it so that idle recovery timer does not get destroyed @@ -12,7 +12,6 @@ goto L_NPC_Exists; L_NPC_Exists: -*/ if (call("magic_checks")) end; if (Sp < 20) end; if (getskilllv(SKILL_MAGIC) < .level) end; @@ -49,35 +48,29 @@ OnAttack: if (target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x10 | 0x02 | 0x04 void call("elt_damage", @upmarmuspell[0], (@upmarmuspell[3] + @upmarmuspell[4]), ELT_WATER, ELT_FIRE, FX_NONE); -// addtimer 0, @upmarmu_spell_npc_name$ + "::OnResetTimer"; + addtimer 0, @upmarmu_spell_npc_name$ + "::OnResetTimer"; set @upmarmuspell[1], @upmarmuspell[1] - 1; + + if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST goto L_FreeRecast; set @num_upmarmu_hits, @num_upmarmu_hits + 1; + if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST set .exhausted, 1, .upmarmu_spell_npc; - if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST goto L_Exhausted; goto L_FreeRecast; L_FreeRecast: if (@upmarmuspell[1] > 0) addtimer 0, strnpcinfo(0) + "::OnSetRecast"; + else + addtimer 0, @upmarmu_spell_npc_name$ + "::OnExhausted"; end; -L_Exhausted: - set @_U_BLOCK, 1; - set @upmarmuspell[1], 0; - misceffect FX_MAGIC_DISCHARGE, strcharinfo(0); - overrideattack; - addtimer UPMARMU_EXHAUST_DURATION, "Upmarmu Exhaust Timer::OnClear"; // set the exhaustion time - sc_start SC_COOLDOWN_UPMARMU, UPMARMU_EXHAUST_DURATION, 0, BL_ID; - smsg SMSG_FAILURE, "Magic: You are too exhausted to use this spell for a while!"; - goto L_StopTimer; - L_Still_Exhausted: smsg SMSG_FAILURE, "Magic: You are still too exhausted to use this spell for a while!"; end; L_StopTimer: -// addtimer 0, @upmarmu_spell_npc_name$ + "::OnStopTimer"; + addtimer 0, @upmarmu_spell_npc_name$ + "::OnStopTimer"; end; OnDischarge: @@ -91,7 +84,6 @@ OnSetRecast: overrideattack (@upmarmuspell[2] * @upmarmuspell[2]), 1, ATTACK_ICON_GENERIC, OVERRIDE_KNUCKLES, strnpcinfo(0)+"::OnAttack", @upmarmuspell[1]; // delay needs to be squared end; -/* OnResetTimer: // This timer is if you stopped somewhere below max hits then after 25sec you recover fully and start at 0 hits again stopnpctimer; @@ -117,9 +109,20 @@ OnTimer25000: setnpctimer 0; end; +OnExhausted: + if (.exhausted < 1) end; + + set @_U_BLOCK, 1; + set @upmarmuspell[1], 0; + set @num_upmarmu_hits, 0; + set .exhausted, 0; + addtimer UPMARMU_EXHAUST_DURATION, "Upmarmu Exhaust Timer::OnClear"; // set the exhaustion time + sc_start SC_COOLDOWN_UPMARMU, UPMARMU_EXHAUST_DURATION, 0, BL_ID; + smsg SMSG_FAILURE, "Magic: You are too exhausted to use this spell for a while!"; + goto L_StopTimer; + OnDestroy: destroy; -*/ OnInit: set .school, SKILL_MAGIC_WAR; @@ -136,6 +139,5 @@ OnInit: OnClear: set @_U_BLOCK, 0; - set @num_upmarmu_hits, 0; end; } |