diff options
52 files changed, 108 insertions, 11 deletions
diff --git a/client-data b/client-data -Subproject 2d4241d0e1e715fb7f6bef15752c2a16fa35ff2 +Subproject 2fbfe721bd69d3ef30c9ee8f3caf7e178a434a7 diff --git a/tools b/tools -Subproject 22ce3fd72b46c4675d82fa4b35fa24b8f22bd2d +Subproject 6984735e4ee369544147c3458759d6863763ea0 diff --git a/world/map/db/item_db.conf b/world/map/db/item_db.conf index 00294852..afd04323 100644 --- a/world/map/db/item_db.conf +++ b/world/map/db/item_db.conf @@ -562,7 +562,6 @@ item_db: ( "> Script: <" bonus bDoubleAddRate, 50; - bonus bSpeedAddRate, 10; bonus bHit, -20; bonus bCritical, -25; //bonus bBaseWeaponDelayAdjust, 1150; // @TMWA diff --git a/world/map/db/item_db_weapon.txt b/world/map/db/item_db_weapon.txt index 2470204b..be6e511e 100644 --- a/world/map/db/item_db_weapon.txt +++ b/world/map/db/item_db_weapon.txt @@ -19,7 +19,7 @@ 573, Falchion, 4, 8000, 4000, 900, 270, 0, 1, 0, 0, 2, 2, 1, 1, 2, 0, {}, {callfunc "UnreleasedItem"; bonus bDoubleAddRate, 40; bonus bHit, -25; bonus bCritical, -25;} 574, ScorpionKing, 4, 8000, 4000, 600, 120, 0, 1, 0, 0, 2, 2, 1, 1, 4, 0, {}, {callfunc "UnreleasedItem";} 575, DesertBow, 4, 8000, 4000, 1200, 85, 0, 7, -10, 0, 2, 34, 1, 1, 11, 0, {}, {callfunc "UnreleasedItem"; set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";} -576, Beheader, 4, 8000, 4000, 2000, 999, 0, 1, 0, 0, 2, 2, 1, 1, 2, 0, {}, {callfunc "NoBowItem"; set @bStat, Int; set @maxbStatVal, 1; callfunc "RequireMaxStat"; bonus bDoubleAddRate, 50; bonus bSpeedAddRate, 10; bonus bHit, -20; bonus bCritical, -25; bonus bBaseWeaponDelayAdjust, 1150;} +576, Beheader, 4, 8000, 4000, 2000, 999, 0, 1, 0, 0, 2, 2, 1, 1, 2, 0, {}, {callfunc "NoBowItem"; set @bStat, Int; set @maxbStatVal, 1; callfunc "RequireMaxStat"; bonus bDoubleAddRate, 50; bonus bHit, -20; bonus bCritical, -25; bonus bBaseWeaponDelayAdjust, 1150;} 577, BoneDarts, 4, 8000, 4000, 300, 100, 0, 3, 0, 0, 2, 2, 1, 1, 22, 0, {}, {callfunc "UnreleasedItem";} 578, SandCutter, 4, 30000, 15000, 1500, 160, 0, 1, 0, 0, 2, 2, 2, 80, 2, 0, {}, {bonus bDoubleAddRate, 5; bonus bHit, 3;} //ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript} diff --git a/world/map/db/params.txt b/world/map/db/params.txt index db5a846c..d600b4ad 100644 --- a/world/map/db/params.txt +++ b/world/map/db/params.txt @@ -49,6 +49,12 @@ Vit2 63 1 Int2 64 1 Dex2 65 1 Luk2 66 1 +// activity +KILLS 490 1 +CASTS 491 1 +ITEMS_USED 492 1 +TILES_WALKED 493 1 +ATTACKS 494 1 GM 500 1 ATTACKRANGE 1000 1 ELTLVL 1001 1 diff --git a/world/map/npc/items/underworld_troll.txt b/world/map/npc/items/underworld_troll.txt index afa22f6f..6a9d8740 100644 --- a/world/map/npc/items/underworld_troll.txt +++ b/world/map/npc/items/underworld_troll.txt @@ -1,6 +1,6 @@ function|script|UnderworldTroll { - if (getequipid(equip_hand1) != KidBook) goto L_Return; + if (getequipid(equip_hand1) != KidBook) && (getequipid(equip_hand1) != FloydBook) goto L_Return; bonus bStr, 10; bonus bAtkRange, 1; goto L_Return; diff --git a/world/map/npc/magic/event-summon-managuardian.txt b/world/map/npc/magic/event-summon-managuardian.txt index 79df2efa..e66c3eb7 100644 --- a/world/map/npc/magic/event-summon-managuardian.txt +++ b/world/map/npc/magic/event-summon-managuardian.txt @@ -22,6 +22,8 @@ L_Pay: sc_start SC_COOLDOWN, 15000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 100; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/event-summon-manatyrant.txt b/world/map/npc/magic/event-summon-manatyrant.txt index bb36d415..bf2634c5 100644 --- a/world/map/npc/magic/event-summon-manatyrant.txt +++ b/world/map/npc/magic/event-summon-manatyrant.txt @@ -21,6 +21,8 @@ L_Pay: sc_start SC_COOLDOWN, 15000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 100; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level0-antiprotect.txt b/world/map/npc/magic/level0-antiprotect.txt index 129d3c62..47106f74 100644 --- a/world/map/npc/magic/level0-antiprotect.txt +++ b/world/map/npc/magic/level0-antiprotect.txt @@ -1,6 +1,8 @@ -|script|antiprotect|32767 { if(call("magic_checks", 1)) end; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow callfunc "magic_exp"; if (@antiprotect) diff --git a/world/map/npc/magic/level0-discharge.txt b/world/map/npc/magic/level0-discharge.txt index 7b2cfa8c..17d1da76 100644 --- a/world/map/npc/magic/level0-discharge.txt +++ b/world/map/npc/magic/level0-discharge.txt @@ -1,6 +1,8 @@ -|script|discharge spell|32767 { if(call("magic_checks")) end; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow callfunc "magic_exp"; // tell the spells they were discharged diff --git a/world/map/npc/magic/level0-wand.txt b/world/map/npc/magic/level0-wand.txt index 7a0f6c25..efb49ba8 100644 --- a/world/map/npc/magic/level0-wand.txt +++ b/world/map/npc/magic/level0-wand.txt @@ -10,6 +10,8 @@ set @_M_BLOCK, 1; // block casting, until the timer clears it addtimer 500, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 500, 0, BL_ID; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_WAND_CAST, strcharinfo(0); callfunc "magic_exp"; diff --git a/world/map/npc/magic/level1-aggravate.txt b/world/map/npc/magic/level1-aggravate.txt index 97ae4151..05eee811 100644 --- a/world/map/npc/magic/level1-aggravate.txt +++ b/world/map/npc/magic/level1-aggravate.txt @@ -9,6 +9,8 @@ set @args$, ""; callfunc "adjust_spellpower"; // we reset @args$ because this spell should not have a target set @distance, (2 + (@spellpower / 50)); set Sp, Sp - 3; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_AGGRAVATE_CAST, strcharinfo(0); callfunc "magic_exp"; foreach 2, getmap(), (POS_X - @distance), (POS_Y - @distance), (POS_X + @distance), (POS_Y + @distance), strnpcinfo(0) + "::OnMob"; diff --git a/world/map/npc/magic/level1-detect-magic.txt b/world/map/npc/magic/level1-detect-magic.txt index bfe320a4..33597d02 100644 --- a/world/map/npc/magic/level1-detect-magic.txt +++ b/world/map/npc/magic/level1-detect-magic.txt @@ -8,6 +8,8 @@ sc_start SC_COOLDOWN, 6000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 3; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_DETECT_CAST, strcharinfo(0); set .@range, (@spellpower/50)+1; foreach 1, getmap(), POS_X - .@range, POS_Y - .@range, POS_X + .@range, POS_Y + .@range, diff --git a/world/map/npc/magic/level1-experience.txt b/world/map/npc/magic/level1-experience.txt index 76d6b888..bfd73378 100644 --- a/world/map/npc/magic/level1-experience.txt +++ b/world/map/npc/magic/level1-experience.txt @@ -14,6 +14,8 @@ if (@level < .level) end; callfunc "adjust_spellpower"; set Sp, Sp - 1; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_EXP_CAST, strcharinfo(0); callfunc "magic_exp"; set @ratio, ((@last_exp*10) - rand(.MAX_MAGIC_EXP[@level]/30))/.MAX_MAGIC_EXP[@level]; diff --git a/world/map/npc/magic/level1-flare-dart.txt b/world/map/npc/magic/level1-flare-dart.txt index d7d387cd..66a3a24b 100644 --- a/world/map/npc/magic/level1-flare-dart.txt +++ b/world/map/npc/magic/level1-flare-dart.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 500, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 10; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_DART_CAST, strcharinfo(0); setarray @flarspell[0], sqrt(@spellpower) * 5, //dmg diff --git a/world/map/npc/magic/level1-grow-alizarin.txt b/world/map/npc/magic/level1-grow-alizarin.txt index 4169c729..d82288cd 100644 --- a/world/map/npc/magic/level1-grow-alizarin.txt +++ b/world/map/npc/magic/level1-grow-alizarin.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 2000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 4; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_GROW_CAST, strcharinfo(0); setarray @summon[0], 0, (getskilllv(.school)/2)+1; callfunc "magic_exp"; diff --git a/world/map/npc/magic/level1-grow-cobalt.txt b/world/map/npc/magic/level1-grow-cobalt.txt index e50cfb39..58028e8c 100644 --- a/world/map/npc/magic/level1-grow-cobalt.txt +++ b/world/map/npc/magic/level1-grow-cobalt.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 2000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 4; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_GROW_CAST, strcharinfo(0); setarray @summon[0], 0, (getskilllv(.school)/2)+1; callfunc "magic_exp"; diff --git a/world/map/npc/magic/level1-grow-gamboge.txt b/world/map/npc/magic/level1-grow-gamboge.txt index cb7f6221..fae2cf7d 100644 --- a/world/map/npc/magic/level1-grow-gamboge.txt +++ b/world/map/npc/magic/level1-grow-gamboge.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 2000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 4; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_GROW_CAST, strcharinfo(0); setarray @summon[0], 0, (getskilllv(.school)/2)+1; callfunc "magic_exp"; diff --git a/world/map/npc/magic/level1-grow-mauve.txt b/world/map/npc/magic/level1-grow-mauve.txt index f90b3b89..af8f54d8 100644 --- a/world/map/npc/magic/level1-grow-mauve.txt +++ b/world/map/npc/magic/level1-grow-mauve.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 2000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 4; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_GROW_CAST, strcharinfo(0); setarray @summon[0], 0, (getskilllv(.school)/2)+1; callfunc "magic_exp"; diff --git a/world/map/npc/magic/level1-lesser-heal.txt b/world/map/npc/magic/level1-lesser-heal.txt index 051445fb..0c124ff3 100644 --- a/world/map/npc/magic/level1-lesser-heal.txt +++ b/world/map/npc/magic/level1-lesser-heal.txt @@ -22,6 +22,8 @@ L_Pay: delitem "Lifestone", 1; callfunc "adjust_spellpower"; set Sp, Sp - 6; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_HEAL_CAST, strcharinfo(0); callfunc "magic_exp"; if (@target_id != BL_ID) goto L_NotMe; diff --git a/world/map/npc/magic/level1-magic-blade.txt b/world/map/npc/magic/level1-magic-blade.txt index 91ff5967..53ab8572 100644 --- a/world/map/npc/magic/level1-magic-blade.txt +++ b/world/map/npc/magic/level1-magic-blade.txt @@ -13,6 +13,8 @@ sc_start SC_COOLDOWN, 500, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 9; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_BLADE_CAST, strcharinfo(0); setarray @chizaspell[0], if_then_else(.@component$ == "Knife", 40, 60), // dmg diff --git a/world/map/npc/magic/level1-make-sulphur.txt b/world/map/npc/magic/level1-make-sulphur.txt index fa728106..4371ba6a 100644 --- a/world/map/npc/magic/level1-make-sulphur.txt +++ b/world/map/npc/magic/level1-make-sulphur.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 4000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 4; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SULPHUR_CAST, strcharinfo(0); setarray @create_params[0], (@spellpower/100)+1+(rand(max(1,(800-@spellpower)))/180), 50; setarray @create_items$[0], "SulphurPowder", "PileOfAsh"; diff --git a/world/map/npc/magic/level1-sense-spouse.txt b/world/map/npc/magic/level1-sense-spouse.txt index fe95c094..607847f3 100644 --- a/world/map/npc/magic/level1-sense-spouse.txt +++ b/world/map/npc/magic/level1-sense-spouse.txt @@ -1,6 +1,8 @@ -|script|sense-spouse|32767 { set .@m, getpartnerid2(); + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow if (.@m < 1) goto L_NotMarried; if (isloggedin(.@m) < 1) diff --git a/world/map/npc/magic/level1-summon-maggots.txt b/world/map/npc/magic/level1-summon-maggots.txt index a70ab869..8700e39a 100644 --- a/world/map/npc/magic/level1-summon-maggots.txt +++ b/world/map/npc/magic/level1-summon-maggots.txt @@ -19,6 +19,8 @@ L_Pay: sc_start SC_COOLDOWN, 20000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 21; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level1-transmute-wood.txt b/world/map/npc/magic/level1-transmute-wood.txt index 2bb07251..f60b35da 100644 --- a/world/map/npc/magic/level1-transmute-wood.txt +++ b/world/map/npc/magic/level1-transmute-wood.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 4000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 5; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_WOOD_CAST, strcharinfo(0); if (@args$ == "boo") goto L_Mouboo; elif (@args$ == "lurk") goto L_Skytlurk; diff --git a/world/map/npc/magic/level2-arrow-hail.txt b/world/map/npc/magic/level2-arrow-hail.txt index 6b6c78b9..90d3e9fc 100644 --- a/world/map/npc/magic/level2-arrow-hail.txt +++ b/world/map/npc/magic/level2-arrow-hail.txt @@ -25,6 +25,8 @@ L_Pay: else delitem "IronArrow", 20; delitem "SulphurPowder", 1; set Sp, Sp - 25; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow set @_M_BLOCK, 1; // block casting, until the timer clears it addtimer 5000, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 5000, 0, BL_ID; diff --git a/world/map/npc/magic/level2-barrier.txt b/world/map/npc/magic/level2-barrier.txt index 2c170ae4..77eb5ae5 100644 --- a/world/map/npc/magic/level2-barrier.txt +++ b/world/map/npc/magic/level2-barrier.txt @@ -24,10 +24,12 @@ L_Pay: addtimer 1000, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 1000, 0, BL_ID; set Sp, Sp - 15; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_BARRIER_CAST, strcharinfo(0); callfunc "magic_exp"; if (BL_ID != @target_id) misceffect FX_MAGIC_BARRIER_HIT, @args$; - set .@asorm_time, (@spellpower*200)+2000; + set .@asorm_time, (@spellpower*777)+2023; sc_start SC_MBARRIER, .@asorm_time, max(30,(@spellpower/8))+20, @target_id; message @args$, "Barrier : You are surrounded by a magical barrier."; set @asorm_future, gettimetick(0) + .@asorm_time - 100, @target_id; diff --git a/world/map/npc/magic/level2-detect-players.txt b/world/map/npc/magic/level2-detect-players.txt index 828733a4..0fd57a1c 100644 --- a/world/map/npc/magic/level2-detect-players.txt +++ b/world/map/npc/magic/level2-detect-players.txt @@ -8,6 +8,8 @@ sc_start SC_COOLDOWN, 300, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 7; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_WHO_CAST, strcharinfo(0); callfunc "magic_exp"; set @inwilt$, ""; diff --git a/world/map/npc/magic/level2-enchant-lifestone.txt b/world/map/npc/magic/level2-enchant-lifestone.txt index 178bf18c..a03e645b 100644 --- a/world/map/npc/magic/level2-enchant-lifestone.txt +++ b/world/map/npc/magic/level2-enchant-lifestone.txt @@ -22,6 +22,8 @@ L_Proceed: sc_start SC_COOLDOWN, 4000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 15; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_STONE_CAST, strcharinfo(0); getitem "Lifestone", 1; callfunc "magic_exp"; diff --git a/world/map/npc/magic/level2-flying-backpack.txt b/world/map/npc/magic/level2-flying-backpack.txt index c6d3c461..994e4084 100644 --- a/world/map/npc/magic/level2-flying-backpack.txt +++ b/world/map/npc/magic/level2-flying-backpack.txt @@ -23,6 +23,8 @@ L_Pay: addtimer 1000, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 1000, 0, BL_ID; set Sp, Sp - 12; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_FLYING_CAST, strcharinfo(0); callfunc "magic_exp"; if (BL_ID != @target_id) misceffect FX_MAGIC_FLYING_HIT, @args$; diff --git a/world/map/npc/magic/level2-happy-curse.txt b/world/map/npc/magic/level2-happy-curse.txt index 55516541..aa7be828 100644 --- a/world/map/npc/magic/level2-happy-curse.txt +++ b/world/map/npc/magic/level2-happy-curse.txt @@ -13,6 +13,8 @@ sc_start SC_COOLDOWN, 1000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 13; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_JOY_CAST, strcharinfo(0); callfunc "magic_exp"; diff --git a/world/map/npc/magic/level2-hide.txt b/world/map/npc/magic/level2-hide.txt index 6f78f1cf..1274f7a2 100644 --- a/world/map/npc/magic/level2-hide.txt +++ b/world/map/npc/magic/level2-hide.txt @@ -16,6 +16,8 @@ sc_start SC_COOLDOWN, 1000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 11; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_HIDE_CAST, strcharinfo(0); callfunc "magic_exp"; diff --git a/world/map/npc/magic/level2-lay-on-hands.txt b/world/map/npc/magic/level2-lay-on-hands.txt index 8feb9107..1270dfb2 100644 --- a/world/map/npc/magic/level2-lay-on-hands.txt +++ b/world/map/npc/magic/level2-lay-on-hands.txt @@ -24,6 +24,8 @@ L_Pay: addtimer 500, "Magic Timer::OnClear"; // XXX should this be 0 ? sc_start SC_COOLDOWN, 500, 0, BL_ID; set Sp, Sp - 10; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_LAY_CAST, strcharinfo(0); // on caster misceffect FX_MAGIC_LAY_HIT, @args$; // on target diff --git a/world/map/npc/magic/level2-lightning-strike.txt b/world/map/npc/magic/level2-lightning-strike.txt index ce89652c..bdd311a6 100644 --- a/world/map/npc/magic/level2-lightning-strike.txt +++ b/world/map/npc/magic/level2-lightning-strike.txt @@ -12,6 +12,8 @@ sc_start SC_COOLDOWN, 1000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 20; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_BOLT_CAST, strcharinfo(0); setarray @ingravspell[0], @spellpower, diff --git a/world/map/npc/magic/level2-magic-knuckles.txt b/world/map/npc/magic/level2-magic-knuckles.txt index c16485bb..d674c621 100644 --- a/world/map/npc/magic/level2-magic-knuckles.txt +++ b/world/map/npc/magic/level2-magic-knuckles.txt @@ -14,13 +14,15 @@ sc_start SC_COOLDOWN, 500, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 20; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow set .caster, getcharid(3); misceffect FX_MAGIC_KNUCKLE_CAST, strcharinfo(0); setarray @upmarmuspell[0], - max(1, BASE_ATK - 100 + min(100, (Int+Int2))), // dmg + max(1, BASE_ATK - 100 + min(100, (Int+Int2) * 2)), // dmg ((@spellpower/10) + (((Dex+Dex2) * 8)/(sqrt(BaseLevel + 34)) + 20)), // charges (you get more at lower levels) - (sqrt(300 - ((Agi+Agi2) * 2)) + (5/2)), // delay - (((Agi+Agi2) + (Int+Int2)) * 2 / 5), // dmg bonus + (sqrt((300 - ((Agi+Agi2) * 2)) + (5/2) * 4)), // delay + (((Agi+Agi2) + (Int+Int2)) / 5), // dmg bonus (((BaseLevel/5) + Str) * 2); // do not allow to equip light armor, cast, and then switch to heavy armor to get bonus str callfunc "magic_exp"; goto L_FreeRecast; diff --git a/world/map/npc/magic/level2-make-arrows.txt b/world/map/npc/magic/level2-make-arrows.txt index dbd2bc2f..ad362548 100644 --- a/world/map/npc/magic/level2-make-arrows.txt +++ b/world/map/npc/magic/level2-make-arrows.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 8; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0); setarray @create_params[0], (@spellpower/32)+1+(rand(max(1,(800-@spellpower)))/80), 500; setarray @create_items$[0], "IronArrow", "WarpedLog"; diff --git a/world/map/npc/magic/level2-make-bones.txt b/world/map/npc/magic/level2-make-bones.txt index 2cc3f922..bc9bc6e5 100644 --- a/world/map/npc/magic/level2-make-bones.txt +++ b/world/map/npc/magic/level2-make-bones.txt @@ -22,6 +22,8 @@ L_Resume: sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 16; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0); setarray @create_params[0], (@spellpower/32)+1+(rand(max(1,(800-@spellpower)))/80), 500; setarray @create_items$[0], "BoneArrows", "IronArrow"; diff --git a/world/map/npc/magic/level2-make-iron-powder.txt b/world/map/npc/magic/level2-make-iron-powder.txt index 6181be8d..0723e1ff 100644 --- a/world/map/npc/magic/level2-make-iron-powder.txt +++ b/world/map/npc/magic/level2-make-iron-powder.txt @@ -11,6 +11,8 @@ sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 8; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_IRONP_CAST, strcharinfo(0); setarray @create_params[0], (@spellpower/140)+1+(rand(max(1,(900-@spellpower)))/220), 700; setarray @create_items$[0], "IronPowder", "IronOre"; diff --git a/world/map/npc/magic/level2-make-shirt.txt b/world/map/npc/magic/level2-make-shirt.txt index dd42f79a..ac2c0437 100644 --- a/world/map/npc/magic/level2-make-shirt.txt +++ b/world/map/npc/magic/level2-make-shirt.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 25; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0); setarray @create_params[0], 1, 425; setarray @create_items$[0], "CottonShirt", "CottonCloth"; diff --git a/world/map/npc/magic/level2-make-short-tanktop.txt b/world/map/npc/magic/level2-make-short-tanktop.txt index 0fd5d6d3..dc6c1fb8 100644 --- a/world/map/npc/magic/level2-make-short-tanktop.txt +++ b/world/map/npc/magic/level2-make-short-tanktop.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 25; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0); setarray @create_params[0], 1, 250; setarray @create_items$[0], "ShortTankTop", "CottonCloth"; diff --git a/world/map/npc/magic/level2-make-tanktop.txt b/world/map/npc/magic/level2-make-tanktop.txt index a416e7a0..112bafdc 100644 --- a/world/map/npc/magic/level2-make-tanktop.txt +++ b/world/map/npc/magic/level2-make-tanktop.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 5000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 25; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0); setarray @create_params[0], 1, 350; setarray @create_items$[0], "TankTop", "CottonCloth"; diff --git a/world/map/npc/magic/level2-protect.txt b/world/map/npc/magic/level2-protect.txt index 25cb7c50..7abc9a1a 100644 --- a/world/map/npc/magic/level2-protect.txt +++ b/world/map/npc/magic/level2-protect.txt @@ -25,6 +25,8 @@ L_Pay: addtimer 1500, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 1500, 0, BL_ID; set Sp, Sp - 14; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SHIELD_CAST, strcharinfo(0); callfunc "magic_exp"; misceffect FX_MAGIC_SHIELD, @args$; diff --git a/world/map/npc/magic/level2-rain.txt b/world/map/npc/magic/level2-rain.txt index 89ded96d..6a7f288b 100644 --- a/world/map/npc/magic/level2-rain.txt +++ b/world/map/npc/magic/level2-rain.txt @@ -18,6 +18,8 @@ OnCast: L_Pay: if (getskilllv(.school) < 4) delitem "BottleOfWater", 1; set Sp, Sp - 17; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow set @_M_BLOCK, 1; // block casting, until the timer clears it addtimer 3000, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 3000, 0, BL_ID; diff --git a/world/map/npc/magic/level2-shear.txt b/world/map/npc/magic/level2-shear.txt index c6141a1c..8f259bd3 100644 --- a/world/map/npc/magic/level2-shear.txt +++ b/world/map/npc/magic/level2-shear.txt @@ -9,6 +9,8 @@ sc_start SC_COOLDOWN, 1000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 23; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SHEAR_CAST, strcharinfo(0); setarray @chipchipspell[0], @spellpower, diff --git a/world/map/npc/magic/level2-summon-fluffies.txt b/world/map/npc/magic/level2-summon-fluffies.txt index d232b96e..f10a86b5 100644 --- a/world/map/npc/magic/level2-summon-fluffies.txt +++ b/world/map/npc/magic/level2-summon-fluffies.txt @@ -20,6 +20,8 @@ L_Pay: sc_start SC_COOLDOWN, 20000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 39; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_FLUFFY_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level2-summon-mouboo.txt b/world/map/npc/magic/level2-summon-mouboo.txt index 5b5887e7..c692e9cf 100644 --- a/world/map/npc/magic/level2-summon-mouboo.txt +++ b/world/map/npc/magic/level2-summon-mouboo.txt @@ -20,6 +20,8 @@ L_Pay: sc_start SC_COOLDOWN, 20000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 35; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_MOUBOO_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level2-summon-pinkie.txt b/world/map/npc/magic/level2-summon-pinkie.txt index e788382d..61af9eed 100644 --- a/world/map/npc/magic/level2-summon-pinkie.txt +++ b/world/map/npc/magic/level2-summon-pinkie.txt @@ -20,6 +20,8 @@ L_Pay: sc_start SC_COOLDOWN, 20000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 35; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_PINKY_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level2-summon-snakes.txt b/world/map/npc/magic/level2-summon-snakes.txt index db0d0b6c..0723961b 100644 --- a/world/map/npc/magic/level2-summon-snakes.txt +++ b/world/map/npc/magic/level2-summon-snakes.txt @@ -21,6 +21,8 @@ L_Pay: sc_start SC_COOLDOWN, 15000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 40; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SNAKE_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level2-summon-spiky-mushroom.txt b/world/map/npc/magic/level2-summon-spiky-mushroom.txt index 1edab6f4..701648d5 100644 --- a/world/map/npc/magic/level2-summon-spiky-mushroom.txt +++ b/world/map/npc/magic/level2-summon-spiky-mushroom.txt @@ -20,6 +20,8 @@ L_Pay: sc_start SC_COOLDOWN, 20000, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 33; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_SPIKY_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; diff --git a/world/map/npc/magic/level2-summon-wickedmushroom.txt b/world/map/npc/magic/level2-summon-wickedmushroom.txt index eced8c3a..014a5d80 100644 --- a/world/map/npc/magic/level2-summon-wickedmushroom.txt +++ b/world/map/npc/magic/level2-summon-wickedmushroom.txt @@ -4,7 +4,7 @@ OnCast: if(call("magic_checks")) end; - if (Sp < 35) end; + if (Sp < 42) end; if (getmapflag(getmap(), MF_TOWN)) end; if (getskilllv(SKILL_MAGIC) < .level) end; if (getskilllv(.school) < .level) end; @@ -20,15 +20,17 @@ L_Pay: addtimer 15000, "Magic Timer::OnClear"; // set the new debuff sc_start SC_COOLDOWN, 15000, 0, BL_ID; callfunc "adjust_spellpower"; - set Sp, Sp - 35; + set Sp, Sp - 42; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_WICKED_CAST, strcharinfo(0); callfunc "magic_exp"; set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID; set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127); if (.@puppet < 1) end; - set .count, (@spellpower/250)+1, .@puppet; + set .count, (@spellpower/180)+1, .@puppet; set .master, BL_ID, .@puppet; - set .lifetime, @spellpower*80, .@puppet; + set .lifetime, @spellpower*300, .@puppet; addnpctimer 4000-(@spellpower*9), .@puppet$+"::OnSummon"; addnpctimer 6000, .@puppet$+"::OnDestroy"; end; diff --git a/world/map/npc/magic/level2-toxic-dart.txt b/world/map/npc/magic/level2-toxic-dart.txt index ef621cbb..a74ab475 100644 --- a/world/map/npc/magic/level2-toxic-dart.txt +++ b/world/map/npc/magic/level2-toxic-dart.txt @@ -12,6 +12,8 @@ sc_start SC_COOLDOWN, 500, 0, BL_ID; callfunc "adjust_spellpower"; set Sp, Sp - 15; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_TDART_CAST, strcharinfo(0); setarray @phlexspell[0], (sqrt(@spellpower) * 5), // elt damage diff --git a/world/map/npc/magic/level3-necromancy.txt b/world/map/npc/magic/level3-necromancy.txt index 48dc1ebf..416b8af5 100644 --- a/world/map/npc/magic/level3-necromancy.txt +++ b/world/map/npc/magic/level3-necromancy.txt @@ -20,6 +20,8 @@ addtimer 20000, "Magic Timer::OnClear"; sc_start SC_COOLDOWN, 20000, 0, BL_ID; set Sp, Sp - 50; + set CASTS, CASTS + 1; + if (CASTS < 0) set CASTS, 1; // overflow misceffect FX_MAGIC_DARKRED, strcharinfo(0); // on caster misceffect FX_PENTAGRAM_BUILDUP, @args$; // on target |