From a683df83627b0206ebd786cea6a1cda86e4da5e3 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 8 Jun 2018 13:29:25 -0300 Subject: Rewrite Soren's Core Logic --- npc/soren-2/main.txt | 60 ++++++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 28 deletions(-) (limited to 'npc/soren-2') diff --git a/npc/soren-2/main.txt b/npc/soren-2/main.txt index cbae53d7a..d9d70799a 100644 --- a/npc/soren-2/main.txt +++ b/npc/soren-2/main.txt @@ -50,6 +50,8 @@ OnCheck: OnSanctum: ++@sorensanctum; + if (ispcdead()) + end; // Decide if we'll spawn or add items. Previous failures are NOT considerated. .@odds=rand(1, 10000); @@ -57,32 +59,49 @@ OnSanctum: .@lx=24; .@ly=27; .@ux=40; .@uy=36; + // Core Logic, Part 1 + // Decide rarity + + // 1%: Super Rare drop + // 9%: Rare Drop + // 10%: Normal Drop + // 50%: Normal Spawn + // 10%: Rare Spawn + // 19%: Drop + Spawn + // 1%: Super Rare Spawn + + if (.@odds <= 100 || .@odds >= 9900) { + .@bonus=2; + } else if (.@odds <= 1000 || (.@odds >= 7000 && .@odds < 8000)) { + .@bonus=1; + } + // Generate which monster/item would be dropped, depending on your (un)luck at ODDS - .@mid=rand(1,10); + .@mid=rand(1,10)+.@bonus; switch (.@mid) { case 1: - .@monsterId = Moonshroom ; break; + .@monsterId = RedScorpion ; break; case 2: .@monsterId = CaveMaggot ; break; case 3: - .@monsterId = FallenGuard2 ; break; + .@monsterId = SeaSlime ; break; case 4: - .@monsterId = BlackScorpion ; break; + .@monsterId = Mouboo ; break; case 5: .@monsterId = LavaSlime ; break; case 6: - .@monsterId = RedScorpion ; break; + .@monsterId = BlackScorpion ; break; case 7: .@monsterId = Snake ; break; case 8: - .@monsterId = SeaSlime ; break; + .@monsterId = FallenGuard2 ; break; case 9: - .@monsterId = Mouboo ; break; + .@monsterId = Moonshroom ; break; default: .@monsterId = Yeti ; break; } // Item Gen - .@mid=rand(1,10); + .@mid=rand(1,10)+.@bonus; switch (.@mid) { case 1: .@itemId = Acorn ; break; @@ -106,30 +125,15 @@ OnSanctum: .@itemId = rand(CopperOre, TitaniumOre) ; break; } - - // Core Logic - // 1%: Super Rare drop - if (.@odds <= 100) { + // Core Logic, part 3 + // Make Items or Monsters + if (.@odds <= 2000) { makeitem(.@itemId, 1, .map$, rand(.@lx, .@ux), rand(.@ly, .@uy)); - // 9%: Rare Drop - } else if (.@odds <= 1000) { - makeitem(.@itemId, 1, .map$, rand(.@lx, .@ux), rand(.@ly, .@uy)); - // 10%: Normal Drop - } else if (.@odds <= 2000) { - makeitem(.@itemId, 1, .map$, rand(.@lx, .@ux), rand(.@ly, .@uy)); - // 50%: Normal Spawn - } else if (.@odds <= 7000) { + } else if (.@odds <= 8000 || .@odds > 9900) { areamonster .map$, .@lx, .@ly, .@ux, .@uy, strmobinfo(1, .@monsterId), .@monsterId, .@amount; - // 10%: Rare Spawn - } else if (.@odds <= 8000) { - areamonster .map$, .@lx, .@ly, .@ux, .@uy, strmobinfo(1, .@monsterId), .@monsterId, .@amount; - // 19%: Drop + Spawn - } else if (.@odds <= 9900) { - areamonster .map$, .@lx, .@ly, .@ux, .@uy, strmobinfo(1, .@monsterId), .@monsterId, .@amount; - makeitem(.@itemId, 1, .map$, rand(.@lx, .@ux), rand(.@ly, .@uy)); - // 1%: Super Rare Spawn } else { areamonster .map$, .@lx, .@ly, .@ux, .@uy, strmobinfo(1, .@monsterId), .@monsterId, .@amount; + makeitem(.@itemId, 1, .map$, rand(.@lx, .@ux), rand(.@ly, .@uy)); } // Revert sprite if needed -- cgit v1.2.3-60-g2f50