From be0f5e53ff8f5f81cf0bee0637fed4e77802f4ed Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 22 May 2019 00:19:38 -0300 Subject: UDT Challenge. I got up to wave 14, and you? --- db/re/mob_db.conf | 9 ++--- npc/003-13/arnea.txt | 97 +++++++++++++++++++++++++++++++++------------------- npc/012-7/airlia.txt | 6 ++++ 3 files changed, 72 insertions(+), 40 deletions(-) diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index 4b3760360..5e2971238 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -8491,12 +8491,13 @@ mob_db: ( CanAttack: true ChangeTargetMelee: true ChangeChase: true + Aggressive: true CastSensorChase: true } - MoveSpeed: 300 - AttackDelay: 1872 - AttackMotion: 672 - DamageMotion: 200 + MoveSpeed: 152 + AttackDelay: 872 + AttackMotion: 172 + DamageMotion: 100 Drops: { StrangeCoin: 1 } diff --git a/npc/003-13/arnea.txt b/npc/003-13/arnea.txt index 49f1da0c4..6ecc6710d 100644 --- a/npc/003-13/arnea.txt +++ b/npc/003-13/arnea.txt @@ -39,7 +39,7 @@ L_Manage: mesn; select l("warp back"), - l("spawn challenge monster! How far can you go?"), + rif(!'UDTf, l("begin UDT Challenge")), l("cancel"); switch (@menu) @@ -48,41 +48,27 @@ L_Manage: warp "003-10", 22, 62; break; case 2: - .@mg=monster("003-13", 38, 32, "Gladiator", TestingMob, 1); - setunitdata(.@mg, UDT_LEVEL, BaseLevel+@UDTf); - setunitdata(.@mg, UDT_HP, MaxHp+(@UDTf*45)); - setunitdata(.@mg, UDT_MAXHP, MaxHp+(@UDTf*45)); - - setunitdata(.@mg, UDT_STR, readparam(bStr)+(@UDTf*rand(1,3))); - setunitdata(.@mg, UDT_AGI, readparam(bAgi)+(@UDTf*rand(1,3))); - setunitdata(.@mg, UDT_VIT, readparam(bVit)+(@UDTf*rand(1,3))); - setunitdata(.@mg, UDT_INT, readparam(bInt)+(@UDTf*rand(1,3))); - setunitdata(.@mg, UDT_DEX, readparam(bDex)+(@UDTf*rand(1,3))); - setunitdata(.@mg, UDT_LUK, readparam(bLuk)+(@UDTf*rand(1,3))); - - // Now, I don't have this info from player, so... - // We must generate it - .@str=getunitdata(.@mg, UDT_STR); - .@agi=getunitdata(.@mg, UDT_AGI); - .@vit=getunitdata(.@mg, UDT_VIT); - .@int=getunitdata(.@mg, UDT_INT); - .@dex=getunitdata(.@mg, UDT_DEX); - .@luk=getunitdata(.@mg, UDT_LUK); - .@blv=getunitdata(.@mg, UDT_LEVEL); - - // And then fill it - setunitdata(.@mg, UDT_ATKRANGE, any(1,1,1,2)); - setunitdata(.@mg, UDT_ATKMIN, .@blv+.@str+(@UDTf*4)); - setunitdata(.@mg, UDT_ATKMAX, .@blv+.@str+.@luk+(@UDTf*6)); - - setunitdata(.@mg, UDT_DEF, .@blv+.@vit+(@UDTf*2)); - setunitdata(.@mg, UDT_MDEF, .@blv+.@int+(@UDTf*2)); - setunitdata(.@mg, UDT_HIT, .@blv+.@dex+(@UDTf*2)); - setunitdata(.@mg, UDT_FLEE, .@blv+.@agi+(@UDTf*2)); - setunitdata(.@mg, UDT_PDODGE, min(30, .@luk/10+(@UDTf/3))); - setunitdata(.@mg, UDT_CRIT, (.@blv/2)+.@luk+(@UDTf*2)); - @UDTf+=1; - npctalk l("UDT Challenge, wave @@! @@ spawned a fighter!", @UDTf, strcharinfo(0)); + mesc l("spawn challenge monster! How far can you go?"), 2; + mesc l("The UDT Challenge will create a Gladiator Monster which should somehow emulate a PvP experience."); + mesc l("Defeating it will advance the round. How far can you survive?"); + next; + mesc l("Really begin the UDT Challenge?"); + if (askyesno() == ASK_NO) + break; + + npctalk l("UDT Challenge, @@ began the fight!", strcharinfo(0)); + // Save data + 'udt_blv=BaseLevel; + 'udt_bhp=MaxHp; + 'udt_Str=readparam(bStr); + 'udt_Agi=readparam(bAgi); + 'udt_Vit=readparam(bVit); + 'udt_Int=readparam(bInt); + 'udt_Dex=readparam(bDex); + 'udt_Luk=readparam(bLuk); + + // Begin the fight + doevent instance_npcname(.name$)+"::OnGladius"; closeclientdialog; break; case 3: @@ -90,6 +76,45 @@ L_Manage: } close; +OnGladius: + sleep(800); + .@mg=monster(instance_mapname("003-13"), 38, 32, "Gladiator", TestingMob, 1, instance_npcname(.name$)+"::OnGladius"); + setunitdata(.@mg, UDT_LEVEL, 'udt_blv+'UDTf); + setunitdata(.@mg, UDT_MAXHP, 'udt_bhp+('UDTf*45)); + setunitdata(.@mg, UDT_HP, 'udt_bhp+('UDTf*45)); + + setunitdata(.@mg, UDT_STR, 'udt_Str+('UDTf*rand(1,3))); + setunitdata(.@mg, UDT_AGI, 'udt_Agi+('UDTf*rand(1,3))); + setunitdata(.@mg, UDT_VIT, 'udt_Vit+('UDTf*rand(1,3))); + setunitdata(.@mg, UDT_INT, 'udt_Int+('UDTf*rand(1,3))); + setunitdata(.@mg, UDT_DEX, 'udt_Dex+('UDTf*rand(1,3))); + setunitdata(.@mg, UDT_LUK, 'udt_Luk+('UDTf*rand(1,3))); + + // Now, I don't have this info from player, so... + // We must generate it + .@str=getunitdata(.@mg, UDT_STR); + .@agi=getunitdata(.@mg, UDT_AGI); + .@vit=getunitdata(.@mg, UDT_VIT); + .@int=getunitdata(.@mg, UDT_INT); + .@dex=getunitdata(.@mg, UDT_DEX); + .@luk=getunitdata(.@mg, UDT_LUK); + .@blv=getunitdata(.@mg, UDT_LEVEL); + + // And then fill it + setunitdata(.@mg, UDT_ATKRANGE, any(1,1,1,2)); + setunitdata(.@mg, UDT_ATKMIN, .@blv+(.@str*2)+('UDTf*4)); + setunitdata(.@mg, UDT_ATKMAX, .@blv+(.@str*2)+.@luk+('UDTf*6)); + + setunitdata(.@mg, UDT_DEF, .@blv+.@vit+('UDTf*2)); + setunitdata(.@mg, UDT_MDEF, .@blv+.@int+('UDTf*2)); + setunitdata(.@mg, UDT_HIT, (.@blv*2)+.@dex+('UDTf*4)); + setunitdata(.@mg, UDT_FLEE, .@blv+.@agi+('UDTf*2)); + setunitdata(.@mg, UDT_PDODGE, min(30, .@luk/10+('UDTf/3))); + setunitdata(.@mg, UDT_CRIT, (.@blv/2)+.@luk+('UDTf*2)); + 'UDTf+=1; + npctalk ("UDT Challenge, wave " + 'UDTf + "!"); + end; + OnInit: .@npcId = getnpcid(.name$); setunitdata(.@npcId, UDT_HEADTOP, Darkelm); diff --git a/npc/012-7/airlia.txt b/npc/012-7/airlia.txt index f833eb7fe..f0ce38ac6 100644 --- a/npc/012-7/airlia.txt +++ b/npc/012-7/airlia.txt @@ -149,8 +149,14 @@ L_In5: L_Nivalis: // Supposed to send player to talk with another NPC on Nivalis about World's Edge + mes l("Going to World Edge? Never heard of."); + next; + mes l("my father probably knew... Well, you better ask Blue Sage then."); + next; mesc b(l(".:: Main Quest 3-1 ::.")), 3; mesc l("* Meet the Blue Sage"), 9; + if (is_staff()) + setq General_Narrator, 10, 0; close; OnInit: -- cgit v1.2.3-60-g2f50