diff options
author | Jesusaves <cpntb1@ymail.com> | 2023-10-01 19:33:45 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2023-10-01 19:33:45 -0300 |
commit | 01dadc7c6e14b1b6df28574c7237c1ceb38432b2 (patch) | |
tree | ef1d83c9bf9971a5dda73ff96aa9c9c6917c0b85 | |
parent | c41a42a5d2b13e12796dd43d978e784af75e402c (diff) | |
download | serverdata-01dadc7c6e14b1b6df28574c7237c1ceb38432b2.tar.gz serverdata-01dadc7c6e14b1b6df28574c7237c1ceb38432b2.tar.bz2 serverdata-01dadc7c6e14b1b6df28574c7237c1ceb38432b2.tar.xz serverdata-01dadc7c6e14b1b6df28574c7237c1ceb38432b2.zip |
Finish Kamelot Raid - supply Terogan an array of skills, fix broken stuff
Minor reward tweaks, and more dark petal drops (whose sell value is now zero)
The sigils spawns are now much stronger depending on difficulty setting.
-rw-r--r-- | db/re/item_db.conf | 4 | ||||
-rw-r--r-- | npc/042-0/arthur.txt | 4 | ||||
-rw-r--r-- | npc/042-10/ctrl.txt | 28 | ||||
-rw-r--r-- | npc/042-11/boss.txt | 97 | ||||
-rw-r--r-- | npc/042-4/ctrl.txt | 2 |
5 files changed, 125 insertions, 10 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf index e90e3fd93..3c2bb18f7 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -3947,8 +3947,8 @@ item_db: ( Name: "Dark Petal" Type: "IT_ETC" Buy: 50 - Sell: 10 - Weight: 10 + Sell: 0 + Weight: 2 Refine: false }, { diff --git a/npc/042-0/arthur.txt b/npc/042-0/arthur.txt index fc7565fea..da0262211 100644 --- a/npc/042-0/arthur.txt +++ b/npc/042-0/arthur.txt @@ -166,9 +166,9 @@ L_Reward: goto L_DoReward2; $KAMELOT_QUEST[.@g]=$KAMELOT_QUEST[.@g]|128; getitem GuildCoin, .@cn; - guildgetexp(.@cn*1000); // TODO: Make this a decent reward getitembound any(SilverRing, GoldenRing), 1, 2; + guildgetexp(.@cn*2000); goto L_DoReward2; ////////////////////////////////////////////////////////////////////////// @@ -234,9 +234,9 @@ L_DoReward2: // Your reward .@cn+=1; getitem GuildCoin, .@cn; - guildgetexp(.@cn*300); getexp BaseLevel*10, .@cn*35; Zeny+=.@cn*1000; + guildgetexp(.@cn*350); close; OnKillMob: diff --git a/npc/042-10/ctrl.txt b/npc/042-10/ctrl.txt index 9fccee6dc..864b43661 100644 --- a/npc/042-10/ctrl.txt +++ b/npc/042-10/ctrl.txt @@ -210,7 +210,21 @@ function script KatazuliCore { KamelotCaveSpawn($KAMELOT_PC[.@g], .@x-rand2(4), .@y-rand2(4), .@x+rand2(4), .@y+rand2(4), $KAMELOT_MX[.@g]+(.@power/3), "042-10"); .@x+=any(-3,-2,-1,1,2,3); .@y+=any(-3,-2,-1,1,2,3); - monster(.@m$, .@x, .@y, strmobinfo(1, MagicGoblin), MagicGoblin, (@kataspam == 1 ? 6 : (@kataspam == 2 ? 5 : (@kataspam == 3 ? 4 : 3))) ); + /* Determine the random artillery monster to be summoned */ + if ($KAMELOT_MX[.@g] >= 200) + .@mid = any(Jhon, GreatMoubooSlime, DustBoss, DustRevolver, DustRifle, DustGatling, RobinBandit); + else if ($KAMELOT_MX[.@g] >= 150) + .@mid = any(GreatMoubooSlime, DustBoss, DustRevolver, DustRifle, DustGatling, RobinBandit); + else if ($KAMELOT_MX[.@g] >= 120) + .@mid = any(DustBoss, DustRevolver, DustRifle, DustGatling, RobinBandit); + else if ($KAMELOT_MX[.@g] >= 100) + .@mid = any(DustRevolver, DustRifle, DustGatling, RobinBandit, MagicGoblin); + else if ($KAMELOT_MX[.@g] >= 50) + .@mid = any(RobinBandit, MagicGoblin); + else + .@mid = MagicGoblin; + // These do not seem to drop petals? + monster(.@m$, .@x, .@y, strmobinfo(1, .@mid), .@mid, (@kataspam == 1 ? 5 : (@kataspam == 2 ? 4 : (@kataspam == 3 ? 3 : 2))) ); // Take away some HP and MP, but do not make you stand percentheal -1, -5; @@ -293,10 +307,12 @@ OnKillMob: // Handle Dark Petal // XXX: How MX/PC should affect drop rates? // I imagine a higher MX will increase DR.... (Right now, level 100 = +50% DR) + // Meanwhile, more players or difficulty (PC) will increase Nº of petals .@r=rand2(250); if (.@r < 100+$KAMELOT_MX[.@g]) { getmapxy(.@m$, .@x, .@y, 0); - makeitem(DarkPetal, 1, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); + .@am = rand2(1, 1+min(7, $KAMELOT_PC[.@g])); + makeitem(DarkPetal, .@am, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); } // Maybe a reward is due @@ -376,10 +392,12 @@ OnKillMob: // Handle Dark Petal // XXX: How MX/PC should affect drop rates? // I imagine a higher MX will increase DR.... (Right now, level 100 = +20% DR) + // Meanwhile, more players or difficulty (PC) will increase Nº of petals .@r=rand2(500); if (.@r < 100+$KAMELOT_MX[.@g]) { getmapxy(.@m$, .@x, .@y, 0); - makeitem(DarkPetal, 1, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); + .@am = rand2(1, 1+min(7, $KAMELOT_PC[.@g])); + makeitem(DarkPetal, .@am, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); } // Maybe a reward is due @@ -587,10 +605,12 @@ OnKillMob: // Handle Dark Petal // XXX: How MX/PC should affect drop rates? // I imagine a higher MX will increase DR.... (Right now, level 100 = +20% DR) + // Meanwhile, more players or difficulty (PC) will increase Nº of petals .@r=rand2(500); if (.@r < 100+$KAMELOT_MX[.@g]) { getmapxy(.@m$, .@x, .@y, 0); - makeitem(DarkPetal, 1, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); + .@am = rand2(1, 1+min(7, $KAMELOT_PC[.@g])); + makeitem(DarkPetal, .@am, .@m$, rand2(.@x-1, .@x+1), rand2(.@y-1, .@y+1)); } // Maybe a reward is due diff --git a/npc/042-11/boss.txt b/npc/042-11/boss.txt index 5cc3b6578..18c6e8515 100644 --- a/npc/042-11/boss.txt +++ b/npc/042-11/boss.txt @@ -135,7 +135,102 @@ OnTimer5000: KamelotCaveSpawn(.@gcount*max(1, .@hplos), 20, 20, 57, 40, .@avg, "042-11"); } - // TODO: Special skills + // Special skills (seldomly, but entirely randomly, triggered) + if (rand2(10000) < ($KAMELOT_MX[.@g] + $KAMELOT_PC[.@g] + getguildlvl(.@g))) { + // Taken from Aurora Boss Raid and Blanc + .@skill = rand2(10); + getmapxy(.@m$, .@x, .@y, UNITTYPE_MOB, .@mob); + .@c=getunits(BL_PC, .@pcs, MAX_CYCLE_PC, .@m$); + .@mvp=0;.@rnd=0;.@def=-1; + for (.@i = 0; .@i < .@c; .@i++) { + if (!.@rnd || !rand2(.@c)) + .@rnd=.@pcs[.@i]; + if (readbattleparam(.@pcs[.@i], UDT_DEF) > .@def) { + if (readparam(Hp, .@pcs[.@i]) < 1) continue; + .@mvp=.@pcs[.@i]; + .@def=readbattleparam(.@pcs[.@i], UDT_DEF); + } + } + .@lv = $KAMELOT_MX[.@g]; + // Execute the skill + switch (.@skill) { + case 1: + .@msg$ = l("Witness my sublime rain of death. Regeneration!"); + .@hp=getunitdata(@mb, UDT_HP); + .@mp=getunitdata(@mb, UDT_MAXHP); + setunitdata(@mb, UDT_HP, min(.@mp, .@hp+(.@lv * 50))); + .@mobid=(rand2(.@lv) > 50 ? DeathCat : GreenSlime); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 2: + .@msg$ = l("Chaos shall be the founding stone of my town! Falling star!"); + percentheal -5, -10; + .@mobid=(rand2(.@lv) > 50 ? BlackScorpion : RedSlime); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 3: + .@msg$ = l("I, the rightful ruler, demand back this world! Tyranny!"); + percentheal -1, -1; + SC_Bonus(.@t, any(SC_BLIND, SC_POISON), 1); + .@mobid=(rand2(.@lv) > 50 ? DarkLizard : Assassin); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 4: + .@msg$ = l("Stop on your tracks, unfair being! Freeze!"); + SC_Bonus((.@t / 2), any(SC_FREEZE, SC_SLEEP, SC_SLEEP, SC_SLEEP), 1); + .@mobid=(rand2(.@lv) > 50 ? BlueSlime : WhiteSlime); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 5: + .@msg$ = l("There is no free speech. Censorship!"); + SC_Bonus(.@t, SC_SILENCE, 1); + .@mobid=(rand2(.@lv) > 50 ? Thug : RedMushroom); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 6: + .@msg$ = l("And then... There was a quake. And all life died. Bleed!"); + SC_Bonus(.@t, SC_BLOODING, 1); + .@mobid=(rand2(.@lv) > 50 ? BlackSlime : OldSnake); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 7: + .@msg$ = l("Puny mortal, do your best to entertain me! Curse!"); + SC_Bonus(.@t, SC_CURSE, 1); + .@mobid=(rand2(.@lv) > 50 ? FireSkull : Skeleton); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 8: + .@msg$ = l("The problem with typos is - unpredictable side effects."); + SC_Bonus(.@t, any(SC_SILENCE, SC_CURSE, SC_FREEZE, SC_BLOODING, SC_BLIND, SC_POISON, SC_DPOISON, SC_POISON, SC_BURNING, SC_SLEEP), 1); + .@mobid=(rand2(.@lv) > 50 ? Swashbuckler : Bluepar); + monster(.@m$, .@x, .@y, strmobinfo(1, .@mobid), .@mobid, 1); + break; + case 9: + // Second Attack Pattern: Holy Light (vs Tank) + unittalk(.@mob, sprintf("%s, I'll show you no mercy! ##BThunder Bolt##b!", strcharinfo(0, "cursed player", .@mvp))); + .@PW=125; .@SPW=25; .@RG=1; + .@mtk = calcdmg(.@mob, .@mvp, HARM_MAGI); + .@dmg = .@mtk * .@PW / 100; + .@dsb = .@mtk * .@SPW / 100; + sleep(1000); + specialeffect(FX_LIGHTNING, AREA, .@mvp); + areaharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Wind, "filter_always", BL_PC|BL_MER|BL_HOM); + harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy); + break; + default: + // First Attack Pattern: Napalm Beat (vs Random) + unittalk(.blanc, sprintf("This battle is over, %s! ##BThunder Neddle##b!", strcharinfo(0, "cursed player", .@rnd))); + .@PW=35; .@SPW=5; .@RG=2; + .@mtk = calcdmg(.@mob, .@rnd, HARM_MAGI); + .@dmg = .@mtk * .@PW / 100; + .@dsb = .@mtk * .@SPW / 100; + sleep(1000); + specialeffect(FX_LIGHTNING, AREA, .@rnd); + areaharm(.@rnd, .@RG, .@dsb, HARM_MAGI, Ele_Wind, "filter_always", BL_PC|BL_MER|BL_HOM); + harm(.@rnd, .@dmg, HARM_MAGI, Ele_Holy); + break; + } + } // Always update the ratio - Terogan could have been healed setd("$@GTEMP_HP_"+.@m$, .@ratio); diff --git a/npc/042-4/ctrl.txt b/npc/042-4/ctrl.txt index 4bea94407..a70deb9d3 100644 --- a/npc/042-4/ctrl.txt +++ b/npc/042-4/ctrl.txt @@ -12,7 +12,7 @@ // awesome system. Same rules as any treasure box still applies. 042-4,94,47,0 script #chest_0424 NPC_CHEST,{ function monster0424; - TreasureBox(); + TreasureBox(60); // 0.60% better chance specialeffect(.dir == 0 ? 24 : 25, AREA, getnpcid()); // closed ? opening : closing close; |