diff options
author | Jesusaves <cpntb1@ymail.com> | 2018-07-13 23:01:44 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2018-07-13 23:01:44 -0300 |
commit | 4e279bcf145eac9ebf49b95a702a1fc62680a10a (patch) | |
tree | fb085715c09413446aab0a08e05e476a5503b2b2 | |
parent | bcbf02427b21c6d3fb35fb9bb91a3660e4cef5f5 (diff) | |
download | serverdata-4e279bcf145eac9ebf49b95a702a1fc62680a10a.tar.gz serverdata-4e279bcf145eac9ebf49b95a702a1fc62680a10a.tar.bz2 serverdata-4e279bcf145eac9ebf49b95a702a1fc62680a10a.tar.xz serverdata-4e279bcf145eac9ebf49b95a702a1fc62680a10a.zip |
Introduce #parum and the Magic Experience System.
If you re-cast something, no Mana Exp Points are gained.
Only pseudo-magic skills count.
-rw-r--r-- | db/re/item_db.conf | 19 | ||||
-rw-r--r-- | db/re/skill_db.conf | 9 | ||||
-rw-r--r-- | npc/config/magic.txt | 47 | ||||
-rw-r--r-- | npc/magic/parum.txt | 69 | ||||
-rw-r--r-- | npc/magic/zarkor.txt | 5 | ||||
-rw-r--r-- | npc/scripts.conf | 1 |
6 files changed, 138 insertions, 12 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 4314e1ab9..e648aa379 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -4410,6 +4410,25 @@ item_db: ( Sell: 5 Weight: 10 }, +{ + Id: 883 + AegisName: "WarpedLog" + Name: "Warped Log" + Type: "IT_ETC" + Buy: 15 + Sell: 5 + Weight: 8 +}, +{ + Id: 884 + AegisName: "MoubooFigurine" + Name: "Mouboo Figurine" + Type: "IT_ETC" + Buy: 45 + Sell: 15 + Weight: 9 +}, + // <!-- Necklaces --> { Id: 1000 diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index 9a28f9f13..6b387fdb5 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -38348,6 +38348,15 @@ skill_db: ( } }, { + Id: 20024 + Name: "TMW2_PARUM" + Description: "Wood Transmutation" + MaxLevel: 1 + SkillType: { + Self: true + } +}, +{ Id: 20031 Name: "TMW2_FAKESKILL" Description: "Fake Skil" diff --git a/npc/config/magic.txt b/npc/config/magic.txt index 1617bfeff..587b2f081 100644 --- a/npc/config/magic.txt +++ b/npc/config/magic.txt @@ -5,24 +5,30 @@ // // Used for our pseudo-magic. // These are only helpers, you can add more restrictions and effects freely. +// Important Variables: MAGIC_EXP, LAST_SKILL -// SkillID, Mana, MobID{, MP per level, MobPerSkillLevel=2} -function script SummonMagic { +// SkillID, EXP Points +function script GetManaExp { .@sk=getarg(0); - .@mp=getarg(1); - .@id=getarg(2); - .@adj=getarg(4,2); - - if (.@adj < 1) { - debugmes "\033[31mInvalid MobPerSkillLevel for SummonMagic (.@adj): "+.@adj+"\033[0m"; - dispbottom l("Invalid parameter specified, blame saulc."); + .@pt=getarg(1); + if (LAST_SKILL == .@sk) end; - } + LAST_SKILL=.@sk; + MAGIC_EXP=MAGIC_EXP+.@pt; + end; +} +// SkillID, Mana{, MP per level} +function script MagicCheck { // PRE EXECUTION + // Load Variables + .@sk=getarg(0); + .@mp=getarg(1); + .@amp=getarg(2,0); + // Check Skill if (getskilllv(.@sk) < 1) - end; + return 0; // Load mana cost .@amp=getarg(3,0); @@ -31,9 +37,28 @@ function script SummonMagic { // Check mana if (readparam(Sp) < .@mp) { dispbottom l("Insufficient mana: @@/@@.", readparam(Sp), .@mp); + return 0; + } + return 1; +} + +// SkillID, Mana, MobID{, MP per level, MobPerSkillLevel=2} +function script SummonMagic { + .@sk=getarg(0); + .@mp=getarg(1); + .@id=getarg(2); + .@adj=getarg(4,2); + + if (.@adj < 1) { + debugmes "\033[31mInvalid MobPerSkillLevel for SummonMagic (.@adj): "+.@adj+"\033[0m"; + dispbottom l("Invalid parameter specified, blame saulc."); end; } + // PRE EXECUTION + if (!MagicCheck(.@sk, .@mp, .@amp)) + end; + // EXECUTION // Apply costs diff --git a/npc/magic/parum.txt b/npc/magic/parum.txt new file mode 100644 index 000000000..951a71699 --- /dev/null +++ b/npc/magic/parum.txt @@ -0,0 +1,69 @@ +// TMW2 script +// Author: Jesusalva <admin@tmw2.org> +// +// Magic Script: TMW2_PARUM +// +// Attempts to transmutate Raw Logs. +// May create arrows, Mouboo Figurines, Warped Logs. +// With enough ManaExp may create WoodenLog. +// Is not powerful enough to create overly complex stuff like Wooden Sword, Wooden Shield or Wooden Bow +// Final item is random + +- script sk#parum 32767,{ + end; + +/* +OnFriendlyDeath: + emote 4; + end; +*/ + +OnCall: + // Other requeriments + if (countitem(RawLog) < 1) { + dispbottom l("You need @@ to cast this skill.", getitemlink(RawLog)); + end; + } + + // Check cooldown + /* TODO */ + // This will only vanish upon logout =/ + if (@parum_at > gettimetick(2)) { + dispbottom l("Skill is in cooldown."); + end; + } + + // Check requisites + if (!MagicCheck(TMW2_PARUM, 50)) + end; + + // Create the stuff based on MAGIC_EXP + .@r=rand(1,41); + if (.@r < 42-(MAGIC_EXP/2)) { + getitem WarpedLog, 1; + } else { + if (.@r > 30) + getitem MoubooFigurine, 1; + else if (.@r > 20 && MAGIC_EXP > 82) + getitem WoodenLog, 1; + else + getitem Arrow, .@r; + } + // I know, the code is not very sane. A number from 0 to 40 is cast. + // You will get lots of useless Warped Logs until you have 82 MExp. + // If you do not get a Warped Log, you have 25% chances of getting the + // Mouboo figurine. The other will be arrows, unless you hit the 82 MExp value + // which will add 25% chances to get a Wooden Log too. These values are estimate. + + + // Get a few mana experience points (this is NOT used by Soul Menhir) + GetManaExp(TMW2_PARUM, rand(1,3)); + + // set cooldown + @parum_at=gettimetick(2)+4; + end; + +OnInit: + bindatcmd "sk-parum", "sk#parum::OnCall", 0, 100, 0; + end; +} diff --git a/npc/magic/zarkor.txt b/npc/magic/zarkor.txt index b1da8ec6e..18718c811 100644 --- a/npc/magic/zarkor.txt +++ b/npc/magic/zarkor.txt @@ -34,9 +34,12 @@ OnCall: // Summon Magic SummonMagic(TMW2_ZARKOR, 400, CaveMaggot, 75, 2); + // Get a single mana experience point (this is NOT used by Soul Menhir) + GetManaExp(TMW2_ZARKOR, 1); + /* // set cooldown - @skzarkor_cooldown=gettimetick(0)+20; + @skzarkor_cooldown=gettimetick(2)+20; */ @zark_caveat=1; end; diff --git a/npc/scripts.conf b/npc/scripts.conf index 02d71e1dd..0af3f5237 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -83,6 +83,7 @@ // Magic Commands "npc/magic/zarkor.txt", +"npc/magic/parum.txt", // Maps specific scripts @include "npc/_import.txt" |