summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/001-13/main.txt1
-rw-r--r--npc/functions/aurora.txt61
2 files changed, 49 insertions, 13 deletions
diff --git a/npc/001-13/main.txt b/npc/001-13/main.txt
index 1b7e145d1..eeb44d3c2 100644
--- a/npc/001-13/main.txt
+++ b/npc/001-13/main.txt
@@ -155,6 +155,7 @@ OnPump:
unittalk(@mb, .@msg$);
dispbottom l("Time left: %s", FuzzyTime(@tm));
+ // TODO: Maybe flush the boss HP to upstream to prevent farming?
addtimer 60000, "sBossRaid::OnPump";
end;
diff --git a/npc/functions/aurora.txt b/npc/functions/aurora.txt
index 859bdd48f..03e5ce195 100644
--- a/npc/functions/aurora.txt
+++ b/npc/functions/aurora.txt
@@ -71,10 +71,14 @@ function script FYNewEvent {
DelItemFromEveryPlayer(BrokenMedal);
DelItemFromEveryPlayer(EventDreamTicket);
DelItemFromEveryPlayer(EventNaftalin);
- DelChrRegFromEveryPlayer(DTOWER_DAY);
- DelChrRegFromEveryPlayer(DTOWER_ROLL);
- DelChrRegFromEveryPlayer(DTOWER_FLOOR);
- DelChrRegFromEveryPlayer(FYRAID_LV);
+ DelChrRegFromEveryPlayer("DTOWER_DAY");
+ DelChrRegFromEveryPlayer("DTOWER_ROLL");
+ DelChrRegFromEveryPlayer("DTOWER_FLOOR");
+ DelChrRegFromEveryPlayer("FYRAID_LV");
+ deletearray $FYRAID_OWNER;
+ deletearray $FYRAID_TIME;
+ deletearray $FYRAID_HP;
+ deletearray $FYRAID_LV;
// Select the event
switch ($FYEVENT_CYCLE % 12) {
case 1:
@@ -123,10 +127,9 @@ function script FYNewEvent {
kamibroadcast("Regnum's Blessing: "+$REGNUM_BLESSMAP_H$+" is now blessed!", "Aurora Events");
break;
case 10:
- // FIXME: PLACEHOLDER
- $EVENT$="Fishing";
- callfunc("FYEConf_Fishing");
- kamibroadcast("Catch the Golden Fish is now open!", "Aurora Events");
+ $EVENT$="Raid";
+ callfunc("FYEConf_Raid");
+ kamibroadcast("Oh noes! "+$RAIDING_BOSS$+" is attacking our world!", "Aurora Events");
break;
case 11:
// FIXME: PLACEHOLDER
@@ -136,7 +139,7 @@ function script FYNewEvent {
default:
$EVENT$="Tower";
callfunc("FYEConf_Tower");
- kamibroadcast("Dream Towers have appeared!", "Aurora Events");
+ kamibroadcast($DREAMTOWER_SAGE$+"'s Dream Towers have appeared!", "Aurora Events");
break;
}
donpcevent "Aurora::OnRestore";
@@ -425,12 +428,42 @@ function script FYEConf_Raid {
return;
}
-// Boss Raid Appears!
+// Boss Raid Appears! (What you killed is meaningless)
function script FYE_Raid {
.@mob=getarg(0, killedrid);
- // Obtain the monster level and roll a hidden counter
- .@lv=getmonsterinfo(.@mob, MOB_LV);
- DTOWER_ROLL+=.@lv;
+ // Actually - ignore system or auto-generated entities
+ if (.@mob > 1490)
+ return;
+ // Chance goes from 10% to 1%
+ // Defeating the boss lowers the chance in 0.1%
+ if (rand2(1000) > max(100-FYRAID_LV, 10)) return;
+
+ /* A boss was found, update data */
+ .@id = array_find($FYRAID_OWNER, getcharid(3));
+
+ // Wait - Maybe you already found a boss?
+ if (.@id >= 0) {
+ if ($FYRAID_LV[.@id] == FYRAID_LV)
+ return;
+ }
+
+ // Never found a boss before, so assign some place for you
+ if (.@id < 0) {
+ FYRAID_LV += 1;
+ .@id=array_push($FYRAID_OWNER, getcharid(3));
+ }
+
+ // Assign the boss stats
+ $FYRAID_HP[.@id]=2000+FYRAID_LV*1000; // Also declared in 001-13/main.txt
+ $FYRAID_LV[.@id]=FYRAID_LV;
+ $FYRAID_TIME[.@id]=gettimetick(2)+3600; // One hour
+
+ // Announce that the boss was found!
+ announce(l("%s: %s (Lv %d) has appeared!", b(l("BOSS WARNING")), $RAIDING_BOSS$, FYRAID_LV), bc_self);
+ dispbottom l("Talk to Soul Menhir to engage the boss. Time limit = 1 hour.");
+ // The boss is already available for anyone to kill, you get no priority
+ // A new boss won't show up until you visit the Soul Menhir.
+ // (This could be improved)
return;
}
@@ -633,6 +666,8 @@ function script AuroraMobkill {
FYE_Mining(killedrid);
if ($EVENT$ == "Tower")
FYE_Tower1(killedrid);
+ if ($EVENT$ == "Raid")
+ FYE_Raid(killedrid);
return;
}