diff options
Diffstat (limited to 'npc/functions')
-rw-r--r-- | npc/functions/siege.txt | 8 | ||||
-rw-r--r-- | npc/functions/util.txt | 16 |
2 files changed, 22 insertions, 2 deletions
diff --git a/npc/functions/siege.txt b/npc/functions/siege.txt index 98a600dc8..6acdeb359 100644 --- a/npc/functions/siege.txt +++ b/npc/functions/siege.txt @@ -191,14 +191,18 @@ function script siege_check { .@mb+=mobcount(.@m$, "#SiegeCtrl::OnColonelDeath"); .@mb+=mobcount(.@m$, "#SiegeCtrl::OnGeneralDeath"); - // Players failed, so reduce score in 1~10 (like Sergeant~General). + // Players failed, so reduce score in 1~5 (like Sergeant~General). // In future, it could be inverse proportion (-9 for sergeant, -1 for general) if (.@mb) { if ($GAME_STORYLINE == 2) - $MK_TEMPVAR-=rand2(1, 10); + $MK_TEMPVAR-=rand2(1, 5); + kamibroadcast("Players failed to defend the city!!"); debugmes "Number of boss grade monsters found: %d", .@mb; $SIEGE_DIFFICULTY=max(1, ($SIEGE_DIFFICULTY/2)); + // Lower the town reputation in 10% + .@var$="$"+MapToLoc(.@m$)+"_REPUTATION"; + setd(.@var$, getd(.@var$)*9/10); } else { kamibroadcast("The city was defended with success! GG, everyone!"); $SIEGE_DIFFICULTY+=1; diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 886dec447..c32a831e1 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -825,3 +825,19 @@ function script EnterTown { return; } +// Convert map name to location id +// MapToLoc( MapName ) +function script MapToLoc { + // Fill variable + .@v$=getarg(0); + + // Validade variable, see npc/000-1/exit.txt first + setarray .@mapx$, "005-1", "003-1", "009-1", "012-1", "017-1", "018-5", "020-1", "024-1"; + setarray .@locs$, "Candor", "Tulim", "Halin", "Hurns", "LoF", "Lilit", "Nival", "Frostia"; + .@lx=array_find(.@locs$, .@v$); + if (.@lx < 0) + return Exception("Invalid map passed to MapToLoc: "+.@v$, RB_DEBUGMES); + + return .@locs$[.@lx]; +} + |