// Evol Script. // Author: // Ablu // Alastrim // Jesusalva // Reid // Description: // Ratto killer. // The only "lose" conditions are: // 1- dying, but this is not handled anywhere // 2- Time running out, Peter handles that automatically. // Note that if you die here, you won't be able to return and will need to // start the quest over again. (I wonder why it is not handled by an OnDeath event) // iirc, logout will automatically destroy the instance and clear timers, so it // doesn't needs the script writer to handle logout cleanup (only death). 001-2-23,0,0,0 script RattosControl#Artis NPC_HIDDEN,{ end; // Each monster on the basement have its own respawn cycle. // We use a XOR (^) operand to mark that the killed monster is not dead anymore. // This is to reproduce as accurate as possible the legacy behavior of the quest. OnRatto1Respawn: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2^1; areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto1Death"; end; OnRatto2Respawn: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2^2; areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto2Death"; end; OnRatto3Respawn: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2^4; areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto3Death"; end; OnRatto4Respawn: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2^8; areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto4Death"; end; // When you kill a monster on basement, we must check the mob as dead, see if you // finally killed the last one and quest is complete, and add a timer to respawn it // after 1m25s (for flavor purposes, makes quest harder though) OnRatto1Death: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2|1; .@q2=getq2(ShipQuests_Peter); if (.@q2 == 15) goto L_Victor; addtimer(85000, "RattosControl#Artis::OnRatto1Respawn"); end; OnRatto2Death: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2|2; .@q2=getq2(ShipQuests_Peter); if (.@q2 == 15) goto L_Victor; addtimer(85000, "RattosControl#Artis::OnRatto2Respawn"); end; OnRatto3Death: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2|4; .@q2=getq2(ShipQuests_Peter); if (.@q2 == 15) goto L_Victor; addtimer(85000, "RattosControl#Artis::OnRatto3Respawn"); end; OnRatto4Death: .@q2=getq2(ShipQuests_Peter); setq2 ShipQuests_Peter, .@q2|8; .@q2=getq2(ShipQuests_Peter); if (.@q2 == 15) goto L_Victor; addtimer(85000, "RattosControl#Artis::OnRatto4Respawn"); end; // This label is reached when all rattos are dead. We clear the respawn timers // (as we are going to delete the instance map anyway), warp you outside, and // from there onwards, Peter handles properly rewarding you. L_Victor: deltimer("RattosControl#Artis::OnRatto1Respawn"); deltimer("RattosControl#Artis::OnRatto2Respawn"); deltimer("RattosControl#Artis::OnRatto3Respawn"); deltimer("RattosControl#Artis::OnRatto4Respawn"); addtimercount("Peter#Artis::OnTimeout", 5000); addtimer(5000, "Peter#Artis::OnDone"); dispbottom l("It looks like all monsters were killed."); end; }