summaryrefslogtreecommitdiff
path: root/npc/001-2-32/serena.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/001-2-32/serena.txt')
-rw-r--r--npc/001-2-32/serena.txt215
1 files changed, 0 insertions, 215 deletions
diff --git a/npc/001-2-32/serena.txt b/npc/001-2-32/serena.txt
deleted file mode 100644
index d7d18a41..00000000
--- a/npc/001-2-32/serena.txt
+++ /dev/null
@@ -1,215 +0,0 @@
-// The Mana World scripts.
-// Author:
-// Reid
-// Jesusalva
-// Description:
-// Artis's Legion of Aemil officier of the fighting room.
-// Note:
-// ATL - Artis Training Legion
-
-001-2-32,27,27,0 script Serena NPC_SERENA,{
- mesn;
- mesq l("Oh darling, what brought you here?"); // TRANSLATORS: Darling - Expresses familiarity or elderliness in relation to PC.
- next;
- select
- l("I wanna fight."),
- l("Nothing.");
- mes "";
- if (@menu == 1) {
- mes l("Just walk right and talk to me. I'll be there in no time.");
- mesc l("Challenge time limit: 60 minutes after entering the room.");
- }
- close;
-
-OnInit:
- .distance = 3;
- end;
-}
-
-001-2-35,26,27,0 script Serena#Ctrl NPC_SERENA,{
- function checkVictory;
-
- // We can't begin if we're already doing it
- if (.atlf) {
- // TODO: We should check if the timers are running
- //doevent(instance_npcname(.name$)+"::OnVerify");
- if (getq(Artis_Legion_Progress) == 4)
- npctalk l("You're already done with the training, so feel free to leave.");
- else
- npctalk l("Focus on the fight!");
- end;
- }
-
- // Enemies of the Legion of Aemil cannot train, obviously
- if (faction_standing("LEGION", true) < 1) {
- mesn;
- mesq l("Sorry, but I can only train you if Lieutenant Lozerk authorizes.");
- close;
- }
-
- // Otherwise, begin it
- mesn;
- mesq l("Are you ready for your training?");
- next;
- if (askyesno() == ASK_NO) {
- mesn;
- mesq l("Oh dear, please come back later then.");
- close;
- }
- @ATLFIGHT=true;
- // FALL THROUGH
-
-OnBegin:
- mapannounce getmap(), l("Training Arena, %s, get ready!", strcharinfo(0)), bc_all;
- // Save permanent data
- .atl_blv=BaseLevel;
- .atl_Str=readbattleparam(getcharid(3), UDT_STR);
- .atl_Agi=readbattleparam(getcharid(3), UDT_AGI);
- .atl_Vit=readbattleparam(getcharid(3), UDT_VIT);
- .atl_Int=readbattleparam(getcharid(3), UDT_INT);
- .atl_Dex=readbattleparam(getcharid(3), UDT_DEX);
- .atl_Luk=readbattleparam(getcharid(3), UDT_LUK);
- .atl_Dly=readbattleparam(getcharid(3), UDT_ADELAY);
- .atl_Rng=readbattleparam(getcharid(3), UDT_ATKRANGE);
-
- // Save (b)ase data
- .atl_bhp=MaxHp;
- .atl_bAtk1=readbattleparam(getcharid(3), UDT_ATKMIN);
- .atl_bAtk2=readbattleparam(getcharid(3), UDT_ATKMAX);
- .atl_bMatk=readbattleparam(getcharid(3), UDT_MATKMAX);
- .atl_bDef=readbattleparam(getcharid(3), UDT_DEF);
- .atl_bMdef=readbattleparam(getcharid(3), UDT_MDEF);
- .atl_bHit=readbattleparam(getcharid(3), UDT_FLEE)*8/10;
- .atl_bFlee=readbattleparam(getcharid(3), UDT_HIT)*7/10;
- .atl_bCrit=readbattleparam(getcharid(3), UDT_CRIT);
-
- // Save (p)rogression data
- .atl_php=.atl_bhp/6;
- .atl_pAtk1=.atl_bAtk1/12;
- .atl_pAtk2=.atl_bAtk2/12;
- .atl_pMatk=.atl_bMatk/5;
- .atl_pDef=.atl_bDef/5;
- .atl_pMdef=.atl_bMdef/5;
- .atl_pHit=.atl_bFlee/10;
- .atl_pFlee=.atl_bHit/15;
- .atl_pCrit=.atl_bCrit/10;
-
- // Begin the battle
- doevent(instance_npcname(.name$)+"::OnGladius");
- addtimer(5000, instance_npcname(.name$)+"::OnVerify");
- closeclientdialog;
- close;
-
-OnGladius:
- sleep(800);
- // TODO: Coordinates, Helpers?
- .@mg=monster(instance_mapname("001-2-35"), any(25, 30, 35), any(29, 35, 40, 46), "Gladiator", any(LegionSwordswoman, LegionHalberdier, LegionLieutenant, LegionLieutenant), 1, instance_npcname(.name$)+"::OnGladius");
-
- // Set "permanent" data
- setunitdata(.@mg, UDT_ADELAY, .atl_Dly-.atlf);
- setunitdata(.@mg, UDT_ATKRANGE, .atl_Rng+cap_value(.atlf/10, 0, 3));
-
- // Set base data
- setunitdata(.@mg, UDT_LEVEL, .atl_blv+.atlf);
- setunitdata(.@mg, UDT_STR, .atl_Str+.atlf);
- setunitdata(.@mg, UDT_AGI, .atl_Agi+.atlf);
- setunitdata(.@mg, UDT_VIT, .atl_Vit+.atlf);
- setunitdata(.@mg, UDT_INT, .atl_Int+.atlf);
- setunitdata(.@mg, UDT_DEX, .atl_Dex+.atlf);
- setunitdata(.@mg, UDT_LUK, .atl_Luk+.atlf);
-
- // Set variable data
- setunitdata(.@mg, UDT_MAXHP, .atl_bhp+.atl_php*(.atlf-1));
- setunitdata(.@mg, UDT_HP, .atl_bhp+.atl_php*(.atlf-1));
-
- setunitdata(.@mg, UDT_ATKMIN, .atl_bAtk1+.atl_pAtk1*(.atlf-1));
- setunitdata(.@mg, UDT_ATKMAX, .atl_bAtk2+.atl_pAtk2*(.atlf-1));
- setunitdata(.@mg, UDT_MATKMIN, .atl_bMatk+.atl_pMatk*(.atlf-1));
- setunitdata(.@mg, UDT_MATKMAX, .atl_bMatk+.atl_pMatk*(.atlf-1));
- setunitdata(.@mg, UDT_DEF, .atl_bDef+.atl_pDef*(.atlf-1));
- setunitdata(.@mg, UDT_MDEF, .atl_Mdef+.atl_pMdef*(.atlf-1));
- setunitdata(.@mg, UDT_HIT, .atl_bHit+.atl_pHit*(.atlf-1));
- setunitdata(.@mg, UDT_FLEE, .atl_bFlee+.atl_pFlee*(.atlf-1));
- setunitdata(.@mg, UDT_CRIT, .atl_bCrit+.atl_pCrit*(.atlf-1));
-
- setunitdata(.@mg, UDT_PDODGE, min(30, .atl_Luk/10+(.atlf/3)));
-
- .atlf+=1;
- mapannounce instance_mapname("001-2-35"), ("Training Arena, wave " + .atlf + "!"), bc_all;
- maptimer(instance_mapname("001-2-35"), 10, instance_npcname(.name$)+"::OnATLUpdate");
- end;
-
-OnATLUpdate:
- if (.atlf > ATLRANK)
- ATLRANK=.atlf;
- getexp .atlf*7, .atlf*5; // Provide some reward
- end;
-
-// Check for possible cheats, and update default values
-OnVerify:
- if (!.atlf)
- end;
-
- if (readbattleparam(getcharid(3), UDT_ATKRANGE) > .atl_Rng)
- .atl_Rng=readbattleparam(getcharid(3), UDT_ATKRANGE);
-
- if (readbattleparam(getcharid(3), UDT_ATKMAX) > .atl_bAtk1) {
- .atl_bAtk1=readbattleparam(getcharid(3), UDT_ATKMIN);
- .atl_bAtk2=readbattleparam(getcharid(3), UDT_ATKMAX);
- .atl_pAtk1=.atl_bAtk1/10;
- .atl_pAtk2=.atl_bAtk2/10;
- }
-
- if (readbattleparam(getcharid(3), UDT_DEF) > .atl_bDef) {
- .atl_bDef=readbattleparam(getcharid(3), UDT_DEF);
- .atl_pDef=.atl_bDef/5;
- }
-
- if (readbattleparam(getcharid(3), UDT_MDEF) > .atl_bMdef) {
- .atl_bMdef=readbattleparam(getcharid(3), UDT_MDEF);
- .atl_pMdef=.atl_bMdef/5;
- }
-
- if (readbattleparam(getcharid(3), UDT_MATKMAX) > .atl_bMatk) {
- .atl_bMatk=readbattleparam(getcharid(3), UDT_MATKMAX);
- .atl_pMatk=.atl_bMatk/5;
- }
-
- // TODO: Ignore haste potion effects
- // TODO: Update battle statuses on the fly
- if (readbattleparam(getcharid(3), UDT_ADELAY) < .atl_bDly)
- .atl_bDly=readbattleparam(getcharid(3), UDT_DELAY);
-
- // Victory conditions
- if (getq(Artis_Legion_Progress) == 3)
- checkVictory();
-
- addtimer(5000, instance_npcname(.name$)+"::OnVerify");
- end;
-
- // Victory conditions
- function checkVictory {
- if (.atlf > 3) {
- npctalk l("Congratulations, %s. I think this is enough. You can continue fighting to set a good score or report to Lozerk.", strcharinfo(0));
- // Duplicate the dialog in case player miss it
- dispbottom l("Congratulations, %s. I think this is enough. You can continue fighting to set a good score or report to Lozerk.", strcharinfo(0));
- setq Artis_Legion_Progress, 4, 0;
- }
- return;
- }
-
-}
-
-// Helper function for failure
-function script ATLFightEnd {
- if (@ATLFIGHT) {
- @ATLFIGHT=false;
- .@mapn$="atl2@"+getcharid(0);
- killmonster(.@mapn$, "all", false);
- .@q2=getq2(Artis_Legion_Progress);
- set(getvariableofnpc(.atlf, instance_npcname("Serena#Ctrl", .@q2)), 0);
- }
- return;
-}
-
-