// TMW2 scripts. // Authors: // The Mana World Team // Jesusalva // Description: // Cindy Cave core logic. You must flip 5 switches to free Cindy, and kill every // Yeti to leave the Yeti's King Throne Room. Each passing minute, a new Yeti will // spawn. Amount relies on how long this has been dragging on. // Flipping switches creates yetis on the other switches. // You must try flip all 5 switches at once. Once all switches are flipped, there'll // be various waves of Yetis. More time passing = more penalty Yetis, with a safety // check to abort script after a hour. If this happen, everyone inside the cave // will be banned for cheating. This should not be possible without @monsterignore anyway :< // Switches function script CindySwitch_Check_214 { .@st1=getvariableofnpc(.lifetime, "#CindySwitch_06")-gettimetick(2); .@st2=getvariableofnpc(.lifetime, "#CindySwitch_07")-gettimetick(2); .@st3=getvariableofnpc(.lifetime, "#CindySwitch_08")-gettimetick(2); .@st4=getvariableofnpc(.lifetime, "#CindySwitch_09")-gettimetick(2); .@st5=getvariableofnpc(.lifetime, "#CindySwitch_10")-gettimetick(2); .@i=0; if (.@st1 > 0) .@i++; if (.@st2 > 0) .@i++; if (.@st3 > 0) .@i++; if (.@st4 > 0) .@i++; if (.@st5 > 0) .@i++; return .@i; } 021-4,77,25,0 duplicate(#CindySwitch_01) #CindySwitch_06 NPC_SWITCH_OFFLINE 021-4,66,71,0 duplicate(#CindySwitch_01) #CindySwitch_07 NPC_SWITCH_OFFLINE 021-4,25,57,0 duplicate(#CindySwitch_01) #CindySwitch_08 NPC_SWITCH_OFFLINE 021-4,23,13,0 duplicate(#CindySwitch_01) #CindySwitch_09 NPC_SWITCH_OFFLINE 021-4,56,41,0 duplicate(#CindySwitch_01) #CindySwitch_10 NPC_SWITCH_OFFLINE // Cindy // Global Variable: $@CINDY_STATE 021-4,42,41,0 script Cindy#Outside NPC_CINDY_CAGE,{ if (getq(NivalisQuest_Cindy) < 5) goto L_Cheat; if ($@CINDY_STATE > 150000) goto L_Reset; if ($@CINDY_STATE % 2 == 0) goto L_Start; // Victory check missing if (CindySwitch_Check_214() == 5) { // Gate open must advance setnpcdisplay .name$, NPC_CINDY_UNCAGE; } hello; end; L_Cheat: warp "Save", 0, 0; atcommand "@jail "+strcharinfo(0); dispbottom l("Cheater detected."); end; L_Reset: $@CINDY_STATE=0; npctalk l("*beeep*"); end; L_Start: mesn; mesq l("Have you came here to rescue me?"); mes ""; mes ""; mesc l(".:: WARNING ::."), 1; mesc l("Once you decide to rescue Cindy, nobody else will be able to enter or leave this room."), 1; mesc l("The blame of failure will be over you, but so will be the glory of success. There's no death penalty for others."), 1; mes ""; select l("Not yet, I'm waiting for friends"), l("Yes. Let me try to open this."), l("No, I'll let you there to the Yeti's mercy."); if (@menu == 2 && $@CINDY_STATE % 2 == 0) { $@CINDY_STATE+=1; $@CINDY_HERO=strcharinfo(0); goto L_Begin; } close; L_Begin: initnpctimer; enablenpc "#CindySwitch_06"; enablenpc "#CindySwitch_07"; enablenpc "#CindySwitch_08"; enablenpc "#CindySwitch_09"; enablenpc "#CindySwitch_10"; close; L_Cleanup: .lifetime=0; $@CINDY_HERO=""; disablenpc "#CindySwitch_06"; disablenpc "#CindySwitch_07"; disablenpc "#CindySwitch_08"; disablenpc "#CindySwitch_09"; disablenpc "#CindySwitch_10"; setnpcdisplay .name$, NPC_CINDY_CAGE; end; OnInit: .distance=5; .lifetime=0; $@CINDY_HERO=""; disablenpc "#CindySwitch_06"; disablenpc "#CindySwitch_07"; disablenpc "#CindySwitch_08"; disablenpc "#CindySwitch_09"; disablenpc "#CindySwitch_10"; end; }