From 71fdf4363252da10392a944f588a26222bd4e5e4 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 25 Dec 2021 11:31:24 -0300 Subject: Draft version of the boss - without skills --- db/re/mob_db.conf | 16 +++++++++++++- npc/006-7/ctrl.txt | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 4 deletions(-) diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index c8579c2ec..d7bd605c3 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -11934,7 +11934,7 @@ mob_db: ( Def: 349 Mdef: 57 Race: 2 - Element: (1, 4) + Element: (8, 1) Stats: { Str: 99 Agi: 99 @@ -11963,6 +11963,20 @@ mob_db: ( FluoPowder: 900 FluoPowder: 50 } + WeaponAttacks: { + All: 4000 + Bows: 2000 + } + EleResist: { + Ele_Neutral: 5000 + Ele_Water: 2500 + Ele_Fire: 10000 + Ele_Wind: 10000 + Ele_Earth: 7500 + Ele_Holy: 7500 + Ele_Dark: 7500 + Ele_Ghost: 7500 + } }, // System { diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt index da46197aa..67223e25d 100644 --- a/npc/006-7/ctrl.txt +++ b/npc/006-7/ctrl.txt @@ -9,19 +9,76 @@ OnTouch: if (!$@ICICLE_CHALLENGE) warp "006-6", 40, 36; end; + +OnRw: + getexp 1000000, 0; + Mobpt += 10000; + dispbottom l("Der Schneemann has been defeated: %s Monster Points gained.", fnum(10000)); + end; } 006-7,44,50,0 script Ice Lord NPC_YETIFLY,{ - if (.ticks > gettimetick(2)) end; + if (.ticks > gettimetick(2)) { + mesn; + mesq l("This challenge will be available in %s. Please wait until then.", FuzzyTime(.ticks)); + close; + } mesn; mesq l("With Magic and Blades, The Icicle shall break. Do you undertake the challenge?"); mesc l("Advised: 6+ players"), 1; mesc l("Advised: 1+ mage, 1+ tanker"), 1; mesc l("Time Limit: 90 minutes"), 1; + mesc l("Enter/Leave after start: %s", b(l("NO"))), 1; next; - if (askyesno() == ASK_NO) { closeclientdialog; close; } + select + l("Not yet."), + l("Bring it on!"), + rif(REBIRTH, l("Bring me, my worst nightmare.")); + mes ""; + if (@menu == 1) { + closeclientdialog; + close; + } .ticks = gettimetick(2) + 5400; // 90 minutes + .BOSS = monster("006-7", 44, 36, "Der Schneemann", SnowmanBoss, 1); + .@mlt = (@menu == 2 ? 10 : 15); + + setunitdata(.BOSS, UDT_MAXHP, 1000000 * .@mlt / 10); + setunitdata(.BOSS, UDT_HP, 1000000 * .@mlt / 10); + // Reconfigure the AI + .@opt=getunitdata(.BOSS, UDT_MODE); + // Disable looting + if (.@opt & MD_LOOTER) + .@opt=.@opt^MD_LOOTER; + // Add knockback immunity + .@opt=.@opt|MD_NOKNOCKBACK; + // Mark as boss + .@opt=.@opt|MD_BOSS; + // Mark as aggressive + .@opt=.@opt|MD_AGGRESSIVE; + .@opt=.@opt|MD_ANGRY; + // Make it more op + .@opt=.@opt|MD_DETECTOR; + .@opt=.@opt|MD_CASTSENSOR_CHASE; + .@opt=.@opt|MD_CASTSENSOR_IDLE; + .@opt=.@opt|MD_CHANGECHASE; + .@opt=.@opt|MD_CHANGETARGET_MELEE; + .@opt=.@opt|MD_CHANGETARGET_CHASE; + setunitdata(.BOSS, UDT_MODE, .@opt); + + // Nerf the damage, but never miss a hit + setunitdata(.BOSS, UDT_ATKMIN, 60 * .@mlt / 10); + setunitdata(.BOSS, UDT_ATKMAX, 60 * .@mlt / 10); + setunitdata(.BOSS, UDT_ADELAY, 2220 / .@mlt * 10); // 2220 or 1480ms + setunitdata(.BOSS, UDT_HIT, 2400); + + // Boosting the defense is not necessary + // It nerfs weapons to 40% (bows to 20%) + // Then it resists 50% of Neutral element. + // Note it is strong against Water (25% dmg) + // And weak against Fire (snow) and Wind (100% dmg) + // Otherwise, behave as Ghost element disablenpc .name$; initnpctimer; @@ -30,10 +87,12 @@ OnTouch: // Heart OnTimer5000: + if (!mobcount("006-7", "all")) + maptimer2("006-7", 10, "#OutOf0067::OnRw"); if (.ticks < gettimetick(2) || !mobcount("006-7", "all")) { killmonsterall("006-7"); enablenpc .name$; - .ticks = gettimetick(2); + .ticks = min(.ticks, gettimetick(2) + 1800); // Min. Cooldown: 30 min .beats = 0; stopnpctimer; end; -- cgit v1.2.3-70-g09d2