// TMW2 scripts. // Authors: // The Mana World Team // Jesusalva // Description: // Cave logic. Controls also switchs and false warps. See soren/main for more info. // Logic function script CindySwitch_Check_211 { .@st1=getvariableofnpc(.lifetime, "#CindySwitch_01")-gettimetick(2); .@st2=getvariableofnpc(.lifetime, "#CindySwitch_02")-gettimetick(2); .@st3=getvariableofnpc(.lifetime, "#CindySwitch_03")-gettimetick(2); .@st4=getvariableofnpc(.lifetime, "#CindySwitch_04")-gettimetick(2); .@st5=getvariableofnpc(.lifetime, "#CindySwitch_05")-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; } // Passages 021-1,155,196,0 script #0211Logic NPC_NO_SPRITE,0,0,{ end; OnTouch: .@q=getq(NivalisQuest_Cindy); if (.@q < 3) end; if ($@CINDY_STATE > gettimetick(2) || $@CINDY_STATE == 0) goto L_Safe; if ($@CINDY_STATE % 2 == 0) goto L_Blocked; if (CindySwitch_Check_211() == 5) { .@pos=rand(0,8); if (.@q == 4) warp "021-1", .xp[.@pos], .yp[.@pos]; else warp "021-2", 80, 102; } else { switch (CindySwitch_Check_211()) { case 0: case 1: end; case 2: case 3: dispbottom l("A few switches aren't triggered yet."); break; case 4: case 5: dispbottom l("A single switch is not online - Cannot pass without all of them on."); break; } } end; L_Blocked: dispbottom l("This place is reeking blood. We better come again later."); end; L_Safe: dispbottom l("There's no reason to enter these caves now."); end; OnInit: setarray .xp, 25, 43, 97, 142, 274, 52, 36, 52, 120; setarray .yp, 300, 300, 300, 300, 299, 176, 79, 77, 73; end; } 021-1,136,29,0 script #FrostiaGateway NPC_NO_SPRITE,0,0,{ end; OnTouch: npctalkonce l("You need to be using a @@ because extremely cold temperatures.", getitemlink(RedknightArmor)); end; } // Switches 021-1,282,34,0 script #CindySwitch_01 NPC_SWITCH_OFFLINE,{ .@q=getq(NivalisQuest_Cindy); if (.@q < 3) { mesn strcharinfo(0); mesq l("This is a strange switch..."); close; } if (.lifetime-gettimetick(2) <= 0) { mesc l("Insert a key and pull the switch?"); select rif(countitem(TreasureKey), l("Pull it")), l("Leave it"); if (@menu == 1) { delitem TreasureKey, 1; getexp rand(55, 110), rand(5, 11); .lifetime=gettimetick(2)+rand(110, 150); // Something between 1m50s and 2m30s specialeffect(27); setnpcdisplay .name$, NPC_SWITCH_ONLINE; initnpctimer; closedialog; } close; } npctalk l("Automatic disarm in: @@", FuzzyTime(.lifetime)); end; OnTimer1000: if (.lifetime-gettimetick(2) <= 0) { setnpcdisplay .name$, NPC_SWITCH_OFFLINE; stopnpctimer; } else { initnpctimer; } end; OnInit: .sex = G_OTHER; .distance = 3; .lifetime=0; // When will this switch turn off automatically end; } 021-1,231,36,0 duplicate(#CindySwitch_01) #CindySwitch_02 NPC_SWITCH_OFFLINE 021-1,34,29,0 duplicate(#CindySwitch_01) #CindySwitch_03 NPC_SWITCH_OFFLINE 021-1,25,297,0 duplicate(#CindySwitch_01) #CindySwitch_04 NPC_SWITCH_OFFLINE 021-1,30,168,0 duplicate(#CindySwitch_01) #CindySwitch_05 NPC_SWITCH_OFFLINE