From 0c2533f581e381685f57e1966cfe52a9c6994ff1 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 14 Nov 2019 11:03:58 +0000 Subject: [PATCH] Addition of 1-20 level quests. Contributed by robikbobik. --- .../data/scripts/quests/MissingQuests.txt | 15 +- .../Q10961_EffectiveTraining/34110-01.htm | 5 + .../Q10961_EffectiveTraining/34110-02.htm | 7 + .../Q10961_EffectiveTraining/34111-02.htm | 5 + .../quests/Q10961_EffectiveTraining/34111.htm | 4 + .../Q10961_EffectiveTraining.java | 193 ++++++++++++ .../Q10961_EffectiveTraining/no_lvl.html | 3 + .../quests/Q10962_NewHorizons/30332-01.html | 14 + .../quests/Q10962_NewHorizons/30332-02.html | 12 + .../quests/Q10962_NewHorizons/30332-03.html | 13 + .../quests/Q10962_NewHorizons/30332.html | 8 + .../quests/Q10962_NewHorizons/34111-01.html | 7 + .../quests/Q10962_NewHorizons/34111.htm | 5 + .../quests/Q10962_NewHorizons/HeavyArmor.html | 5 + .../quests/Q10962_NewHorizons/LightArmor.html | 5 + .../Q10962_NewHorizons.java | 276 +++++++++++++++++ .../quests/Q10962_NewHorizons/Robe.html | 5 + .../quests/Q10962_NewHorizons/no_lvl.html | 3 + .../quests/Q10966_ATripBegins/30256-01.html | 5 + .../quests/Q10966_ATripBegins/30256.html | 5 + .../quests/Q10966_ATripBegins/30332-01.htm | 5 + .../quests/Q10966_ATripBegins/30332-02.htm | 5 + .../quests/Q10966_ATripBegins/30332-03.htm | 4 + .../quests/Q10966_ATripBegins/30332-04.html | 5 + .../quests/Q10966_ATripBegins/30332-05.html | 4 + .../quests/Q10966_ATripBegins/30332.htm | 7 + .../Q10966_ATripBegins.java | 213 +++++++++++++ .../quests/Q10966_ATripBegins/no_lvl.html | 3 + .../30002-02.htm | 6 + .../Q10981_UnbearableWolvesHowling/30002.htm | 4 + .../30598-01.htm | 6 + .../30598-02.htm | 6 + .../Q10981_UnbearableWolvesHowling.java | 191 ++++++++++++ .../no_lvl.html | 3 + .../quests/Q10982_SpiderHunt/30002-01.html | 8 + .../quests/Q10982_SpiderHunt/30002.htm | 5 + .../quests/Q10982_SpiderHunt/30332-01.html | 14 + .../quests/Q10982_SpiderHunt/30332-02.html | 12 + .../quests/Q10982_SpiderHunt/30332-03.html | 13 + .../quests/Q10982_SpiderHunt/30332.html | 7 + .../quests/Q10982_SpiderHunt/HeavyArmor.html | 5 + .../quests/Q10982_SpiderHunt/LightArmor.html | 5 + .../Q10982_SpiderHunt/Q10982_SpiderHunt.java | 275 +++++++++++++++++ .../quests/Q10982_SpiderHunt/Robe.html | 5 + .../quests/Q10982_SpiderHunt/no_lvl.html | 3 + .../quests/Q10983_TroubledForest/30150-02.htm | 5 + .../quests/Q10983_TroubledForest/30150.htm | 4 + .../quests/Q10983_TroubledForest/30599-01.htm | 6 + .../quests/Q10983_TroubledForest/30599-02.htm | 7 + .../Q10983_TroubledForest.java | 191 ++++++++++++ .../quests/Q10983_TroubledForest/no_lvl.html | 3 + .../Q10984_CollectSpiderweb/30150-01.html | 4 + .../quests/Q10984_CollectSpiderweb/30150.htm | 5 + .../Q10984_CollectSpiderweb/30332-01.html | 14 + .../Q10984_CollectSpiderweb/30332-02.html | 12 + .../Q10984_CollectSpiderweb/30332-03.html | 13 + .../quests/Q10984_CollectSpiderweb/30332.html | 9 + .../Q10984_CollectSpiderweb/HeavyArmor.html | 5 + .../Q10984_CollectSpiderweb/LightArmor.html | 5 + .../Q10984_CollectSpiderweb.java | 276 +++++++++++++++++ .../quests/Q10984_CollectSpiderweb/Robe.html | 5 + .../Q10984_CollectSpiderweb/no_lvl.html | 3 + .../Q10985_CleaningUpTheGround/30137-02.htm | 6 + .../Q10985_CleaningUpTheGround/30137.htm | 4 + .../Q10985_CleaningUpTheGround/30600-01.htm | 6 + .../Q10985_CleaningUpTheGround/30600-02.htm | 5 + .../Q10985_CleaningUpTheGround.java | 192 ++++++++++++ .../Q10985_CleaningUpTheGround/no_lvl.html | 3 + .../quests/Q10986_SwampMonster/30137-01.html | 7 + .../quests/Q10986_SwampMonster/30137.htm | 6 + .../quests/Q10986_SwampMonster/30332-01.html | 14 + .../quests/Q10986_SwampMonster/30332-02.html | 12 + .../quests/Q10986_SwampMonster/30332-03.html | 13 + .../quests/Q10986_SwampMonster/30332.html | 7 + .../Q10986_SwampMonster/HeavyArmor.html | 5 + .../Q10986_SwampMonster/LightArmor.html | 5 + .../Q10986_SwampMonster.java | 276 +++++++++++++++++ .../quests/Q10986_SwampMonster/Robe.html | 5 + .../quests/Q10986_SwampMonster/no_lvl.html | 3 + .../Q10987_PlunderedGraves/30560-02.htm | 4 + .../quests/Q10987_PlunderedGraves/30560.htm | 4 + .../Q10987_PlunderedGraves/30602-01.htm | 6 + .../Q10987_PlunderedGraves/30602-02.htm | 6 + .../Q10987_PlunderedGraves.java | 193 ++++++++++++ .../quests/Q10987_PlunderedGraves/no_lvl.html | 3 + .../quests/Q10988_Conspiracy/30332-01.html | 14 + .../quests/Q10988_Conspiracy/30332-02.html | 12 + .../quests/Q10988_Conspiracy/30332-03.html | 13 + .../quests/Q10988_Conspiracy/30332.html | 9 + .../quests/Q10988_Conspiracy/30560-01.html | 4 + .../quests/Q10988_Conspiracy/30560.htm | 6 + .../quests/Q10988_Conspiracy/HeavyArmor.html | 5 + .../quests/Q10988_Conspiracy/LightArmor.html | 5 + .../Q10988_Conspiracy/Q10988_Conspiracy.java | 276 +++++++++++++++++ .../quests/Q10988_Conspiracy/Robe.html | 5 + .../quests/Q10988_Conspiracy/no_lvl.html | 3 + .../Q10989_DangerousPredators/30601-01.htm | 6 + .../Q10989_DangerousPredators/30601-02.htm | 5 + .../Q10989_DangerousPredators/30650-02.htm | 5 + .../Q10989_DangerousPredators/30650.htm | 4 + .../Q10989_DangerousPredators.java | 192 ++++++++++++ .../Q10989_DangerousPredators/no_lvl.html | 3 + .../Q10990_PoisonExtraction/30332-01.html | 14 + .../Q10990_PoisonExtraction/30332-02.html | 12 + .../Q10990_PoisonExtraction/30332-03.html | 13 + .../quests/Q10990_PoisonExtraction/30332.html | 9 + .../Q10990_PoisonExtraction/30650-01.html | 7 + .../quests/Q10990_PoisonExtraction/30650.htm | 5 + .../Q10990_PoisonExtraction/HeavyArmor.html | 5 + .../Q10990_PoisonExtraction/LightArmor.html | 5 + .../Q10990_PoisonExtraction.java | 280 ++++++++++++++++++ .../quests/Q10990_PoisonExtraction/Robe.html | 5 + .../Q10990_PoisonExtraction/no_lvl.html | 3 + .../scripts/quests/QuestMasterHandler.java | 26 ++ 114 files changed, 3698 insertions(+), 14 deletions(-) create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/Q10961_EffectiveTraining.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Q10962_NewHorizons.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-03.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-04.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-05.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/Q10966_ATripBegins.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/Q10981_UnbearableWolvesHowling.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Q10982_SpiderHunt.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/Q10983_TroubledForest.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Q10984_CollectSpiderweb.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/Q10985_CleaningUpTheGround.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Q10986_SwampMonster.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/Q10987_PlunderedGraves.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Q10988_Conspiracy.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-01.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650-02.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/Q10989_DangerousPredators.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/no_lvl.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-02.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-03.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650-01.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650.htm create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/HeavyArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/LightArmor.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Q10990_PoisonExtraction.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Robe.html create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/no_lvl.html diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/MissingQuests.txt index b81607a289..cf8c294260 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/MissingQuests.txt @@ -22,20 +22,7 @@ 10870 Unfinished Device 10871 Death to the Pirate King! 10960 -10961 -10962 10963 10964 10965 -10966 -10967 -10981 -10982 -10983 -10984 -10985 -10986 -10987 -10988 -10989 -10990 \ No newline at end of file +10967 \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-01.htm new file mode 100644 index 0000000000..9b440ae6d7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-01.htm @@ -0,0 +1,5 @@ +Newbie Guide:
+You just woke up from your sleep, so Im sure its still strange for you.
+I prepared some training for you to adapt, so lets get strated.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-02.htm new file mode 100644 index 0000000000..0da8417ffa --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34110-02.htm @@ -0,0 +1,7 @@ +Newbie Guide:
+The southem part of the Jim Kamael village is called Hills of Hope. Its the place we first settled down, and we believed it would become our hope.
+A long time has passed, but you should also find your hope in that place.
+The Hills of Hope has realtively small animals that are not that dangerous. Start training by hunting them and get used to your sences.
+Hunt 20 Grey Keltir, Elder Grey Keltir, Black Wolf, Elder Black Wolf and come back to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111-02.htm new file mode 100644 index 0000000000..65c0182f31 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111-02.htm @@ -0,0 +1,5 @@ +Trader Leahen:
+Amazing! As expected of a promising Jim Kamael soldier.
+Alright, how about getting ready to go out into the world?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111.htm new file mode 100644 index 0000000000..595b9bc9e4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/34111.htm @@ -0,0 +1,4 @@ +Trader Leahen:
+It looks like you completed the training.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/Q10961_EffectiveTraining.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/Q10961_EffectiveTraining.java new file mode 100644 index 0000000000..a1c9aa71da --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/Q10961_EffectiveTraining.java @@ -0,0 +1,193 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10961_EffectiveTraining; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Effective Training (10961) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10961_EffectiveTraining extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 34110; + private static final int REAHEN = 34111; + // Monsters + private static final int GREY_KELTIR = 21981; + private static final int ELDER_GREY_KELTIR = 21982; + private static final int BLACK_WOLF = 21983; + private static final int ELDER_BLACK_WOLF = 21984; + // Items + private static final ItemHolder SOE_TO_REAHEN = new ItemHolder(91917, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10961_EffectiveTraining() + { + super(10961); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, REAHEN); + addKillId(GREY_KELTIR, ELDER_GREY_KELTIR, BLACK_WOLF, ELDER_BLACK_WOLF); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_EFFECTIVE_TRAINING); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-120020, 55668, -1560); + break; + } + case "34110-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34111-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Reahen", 5000)); + giveItems(killer, SOE_TO_REAHEN); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_ON_THE_HILL_OF_HOPE.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "34110-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "34110-02.htm"; + } + break; + } + case REAHEN: + { + if (qs.isCond(2)) + { + htmltext = "34111.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10961_EffectiveTraining/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-01.html new file mode 100644 index 0000000000..321bbd2ecc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-02.html new file mode 100644 index 0000000000..8ab03c0743 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-03.html new file mode 100644 index 0000000000..abdc7783aa --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332.html new file mode 100644 index 0000000000..f2f19e6e4f --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/30332.html @@ -0,0 +1,8 @@ +Captain Bathis:
+You are a Jin Kamael Soldier? You look as strong as I heard.
+I heard you are coming out of your seclusion into the world.
+You will need some things to be able to get by. I prepared some stuff you might need, so take your pick.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111-01.html new file mode 100644 index 0000000000..530995ce02 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111-01.html @@ -0,0 +1,7 @@ +Trader Leahen:
+You are strong-willed.
+There is a place called Hills of Gold to the east of the village. It is said that gold was discovered when we first settled down, but there is no way confirm that now, so dont worry about the origin of the name.
+What is important right now is to defeat 30 of the Mountain Werewolf, Mountain Fungus, Muertos Warrior, and Muertos Captain.
+I will send you there so that you can train faster.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111.htm new file mode 100644 index 0000000000..1a434510ec --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/34111.htm @@ -0,0 +1,5 @@ +Trader Leahen:
+I retired and am living in peace as a trader, but I used to ve an instructor in charge of training Jin Kamael Sodiers.
+Im still good to offer some training, so dont worry, and do as I say.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Q10962_NewHorizons.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Q10962_NewHorizons.java new file mode 100644 index 0000000000..5c5c0d3e69 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Q10962_NewHorizons.java @@ -0,0 +1,276 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10962_NewHorizons; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * New Horizons (10962) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10962_NewHorizons extends Quest +{ + // NPCs + private static final int LEAHEN = 34111; + private static final int CAPTAIN_BATHIS = 30332; + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Monsters + private static final int MOUNTAIN_WEREWORLF = 21985; + private static final int MOUNTAIN_FUNGUES = 21986; + private static final int MUERTOS_WARRIOR = 21987;// NOTE: Murtos Fighter in old client + private static final int MUERTOS_CAPTAIN = 21988; + + public Q10962_NewHorizons() + { + super(10962); + addStartNpc(LEAHEN); + addTalkId(LEAHEN, CAPTAIN_BATHIS); + addKillId(MOUNTAIN_WEREWORLF, MOUNTAIN_FUNGUES, MUERTOS_WARRIOR, MUERTOS_CAPTAIN); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_NEW_HORIZONS); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34111-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-107827, 47535, -1448); + break; + } + case "NEXT_QUEST": + { + htmltext = "34111.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_IN_THE_GOLDEN_HILLS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "34111.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case LEAHEN: + { + if (qs.isCond(1)) + { + htmltext = "34111-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == LEAHEN) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/no_lvl.html new file mode 100644 index 0000000000..377f13f2a7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10962_NewHorizons/no_lvl.html @@ -0,0 +1,3 @@ +Trader Vollodov:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256-01.html new file mode 100644 index 0000000000..14b89e2f1f --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256-01.html @@ -0,0 +1,5 @@ +Gatekeeper Bella:
+Well... I recommend the Ruins of Agony.
+It is an old ruin with few visitors.
+You can go there via Teleport, which you have just learned. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256.html new file mode 100644 index 0000000000..c6784e5b24 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30256.html @@ -0,0 +1,5 @@ +Gatekeeper Bella:
+You are a novice adventurer. Are you going on an adventure?
+If so, you did better first learn how to get to the places that match you level.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-01.htm new file mode 100644 index 0000000000..e25abc9098 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-01.htm @@ -0,0 +1,5 @@ +Captain Bathis:
+Dont be so impatient. Follow my guidance and you will make a name for youself as a skilled adventurer in no time.
+First, let me tell you a couple of things that are of the highest importance no matter what you do in future. They are about auto-hunting, which will come in handy if you learn about them before you starting fighting in earnest.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-02.htm new file mode 100644 index 0000000000..2e7232c5dd --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-02.htm @@ -0,0 +1,5 @@ +Captain Bathis:
+If you are studied them well lets get started
+But before that, its crucial for adventurers to know how to find places to explore that are suitable for their skill level. Do you know how? + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-03.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-03.htm new file mode 100644 index 0000000000..10faf14534 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-03.htm @@ -0,0 +1,4 @@ +Captain Bathis:
+In that case, I will introduce you to someone more suitable.
+Go down the hill and you will see Gatekeeper Bella. Talk to Bella and she will tel youu how you can find places to explore that match your skill level and how you can get those places. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-04.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-04.html new file mode 100644 index 0000000000..98c29eb1e3 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-04.html @@ -0,0 +1,5 @@ +Captain Bathis:
+Did you defeat the monsters?
+Hmm, you look a bit stronger too. + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-05.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-05.html new file mode 100644 index 0000000000..6b724dfe82 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332-05.html @@ -0,0 +1,4 @@ +Captain Bathis:
+Good, then I got a reward for you! It will help you grow quickly.
+This bracelet in particular is quite valueable. I went through some trouble getting it in case you are under-prepared and suffer diffuculties. I hope you put it to a good use. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332.htm new file mode 100644 index 0000000000..e4e903876a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/30332.htm @@ -0,0 +1,7 @@ +Captain Bathis:
+Turning a greenhorn adventurer into a half-decent one has always been an important task.
+That is right, adventurers like you who havent completed a class transfer yes. If you are skilled enough to transfer class, then there is no reason to delay it.
+I would not force you if you are adamant about not transferring your class, but getting it done will be much more beneficial to you. And its not particularly complex either, just look for the Transfer Class button and press it, and thats it.
+Alright, enought about the class transfer here. Why dont you get serious and start prepairing to make a name for youself as an adventurer?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/Q10966_ATripBegins.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/Q10966_ATripBegins.java new file mode 100644 index 0000000000..2a5764414a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/Q10966_ATripBegins.java @@ -0,0 +1,213 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10966_ATripBegins; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.ChatType; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; +import org.l2jmobius.gameserver.network.serverpackets.NpcSay; + +/** + * A Trip Begins (10966) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10966_ATripBegins extends Quest +{ + // NPCs + private static final int CAPTAIN_BATHIS = 30332; + private static final int BELLA = 30256; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);// TODO: Replace with Advanced Scroll of Escape Event(s) + private static final ItemHolder TALISMAN_OF_ADEN = new ItemHolder(91745, 1);// TODO: Fix item + private static final ItemHolder SCROLL_OF_ENCHANT_TALISMAN_OF_ADEN = new ItemHolder(91756, 1);// TODO: Fix item + private static final ItemHolder ADVENTURERS_BRACELET = new ItemHolder(91934, 1); + // Monsters + private static final int ARACHNID_PREDATOR = 20926; + private static final int SKELETON_BOWMAN = 20051; + private static final int RUIN_SPARTOI = 20054; + private static final int RAGING_SPARTOI = 20060; + private static final int TUMRAN_BUGBEAR = 20062; + private static final int TUMRAN_BUGBEAR_WARRIOR = 20064; + // Misc + private static final int MAX_LEVEL = 25; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10966_ATripBegins() + { + super(10966); + addStartNpc(CAPTAIN_BATHIS); + addTalkId(CAPTAIN_BATHIS, BELLA); + addKillId(ARACHNID_PREDATOR, SKELETON_BOWMAN, RUIN_SPARTOI, RAGING_SPARTOI, RAGING_SPARTOI, TUMRAN_BUGBEAR, TUMRAN_BUGBEAR_WARRIOR); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_20_25_A_TRIP_BEGINS); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30332-01.htm": + { + htmltext = event; + break; + } + case "30332-02.htm": + { + htmltext = event; + break; + } + case "30332-03.htm": + { + qs.startQuest(); + npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.TALK_TO_BELLA)); + htmltext = event; + break; + } + case "30256-01.html": + { + qs.setCond(2, true); + htmltext = event; + break; + } + case "30332-05.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 500000, 12500); + giveItems(player, SOE_NOVICE); + giveItems(player, TALISMAN_OF_ADEN); + giveItems(player, SCROLL_OF_ENCHANT_TALISMAN_OF_ADEN); + giveItems(player, ADVENTURERS_BRACELET); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(2)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + + if (killCount < 300) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + } + else + { + qs.setCond(3, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You have taken your first step as an adventurer.#Return to Bathis and get your reward.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(2)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_IN_THE_RUINS_OF_AGONY.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30332.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case CAPTAIN_BATHIS: + { + if (qs.isCond(1)) + { + htmltext = "30332-03.htm"; + } + else if (qs.isCond(3)) + { + htmltext = "30332-04.html"; + } + break; + } + case BELLA: + { + if (qs.isCond(1)) + { + htmltext = "30256.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == CAPTAIN_BATHIS) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/no_lvl.html new file mode 100644 index 0000000000..504b15391c --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10966_ATripBegins/no_lvl.html @@ -0,0 +1,3 @@ +Captain bathis:
+You do not meet the requirements of the quest (Quest is only available to 20-25 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002-02.htm new file mode 100644 index 0000000000..bc85185a48 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002-02.htm @@ -0,0 +1,6 @@ +Trader Jackson:
+It is not much, but I hope it helps.
+By the way. I heard that Captain Bathis of Gludio Castle is looking for someone to help... Are you interested?
+(Open the Missions window and receive the reward for reaching level 10.)
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002.htm new file mode 100644 index 0000000000..6d2e68af36 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30002.htm @@ -0,0 +1,4 @@ +Trader Jackson:
+It is quiter now. Thank you. Please take it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-01.htm new file mode 100644 index 0000000000..08a1d16226 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-01.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+Those Keltirs and Wolves are wandering around the front of the village, so it is beem chaotic.
+Jackson said he cannot even sleep at night because of their howling. He asked for those Wolves to be kicked out.
+Will you help?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-02.htm new file mode 100644 index 0000000000..7d639a476b --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/30598-02.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+Thank you!
+Please hunt 20 Wolves or Keltirs. +if you are going to the hunting ground, I can send you there.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/Q10981_UnbearableWolvesHowling.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/Q10981_UnbearableWolvesHowling.java new file mode 100644 index 0000000000..f05fd033d4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/Q10981_UnbearableWolvesHowling.java @@ -0,0 +1,191 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10981_UnbearableWolvesHowling; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Unbearable Wolves Howling (10981) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10981_UnbearableWolvesHowling extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 30598; + private static final int JACKSON = 30002; + // Items + private static final ItemHolder SOE_TO_JACKSON = new ItemHolder(91646, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Monsters + private static final int BEARDED_KELTIR = 20481; + private static final int WOLF = 20120; + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10981_UnbearableWolvesHowling() + { + super(10981); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, JACKSON); + addKillId(BEARDED_KELTIR, WOLF); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_UNBEARABLE_WOLVES_HOWLING); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-90050, 241763, -3560); + break; + } + case "30598-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30002-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Jackson", 5000)); + giveItems(killer, SOE_TO_JACKSON); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.KILL_WOLVES_AND_BEARDED_KELTIRS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30598-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "30598-02.htm"; + } + break; + } + case JACKSON: + { + if (qs.isCond(2)) + { + htmltext = "30002.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10981_UnbearableWolvesHowling/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002-01.html new file mode 100644 index 0000000000..9eb3089f40 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002-01.html @@ -0,0 +1,8 @@ +Trader Jackson:
+Captain Bathis want someone who knows about spiders, more than a veteran. +It looks like he wants to raise someone to hunt spiders expertly in Gludio. +How many, you ask? I think 30 should be enough. +There are many spiders to the west of the island. It is pretty far to walk there. +If you are going to the hunting ground, I can help you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002.htm new file mode 100644 index 0000000000..a4446081e7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30002.htm @@ -0,0 +1,5 @@ +Trader Jackson:
+Captain Bathis of Gludio Castle is looking for a spider expert to hunt spiders.
+Defeat some Giant Spiders as practice and go to find Captain Bathis.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-01.html new file mode 100644 index 0000000000..0a4058e35c --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-02.html new file mode 100644 index 0000000000..05bfb764aa --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-03.html new file mode 100644 index 0000000000..eec9fcbb5e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332.html new file mode 100644 index 0000000000..737d1ee99a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/30332.html @@ -0,0 +1,7 @@ +Captain Bathis:
+You came from Talking Island? I see. You know how hunt spiders?
+Hm. It should be good enough for you. You will have to get ready to go hunt. Pick one of these for your armor.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Q10982_SpiderHunt.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Q10982_SpiderHunt.java new file mode 100644 index 0000000000..28ca5b8dc7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Q10982_SpiderHunt.java @@ -0,0 +1,275 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10982_SpiderHunt; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * New Horizons (10982) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10982_SpiderHunt extends Quest +{ + // NPCs + private static final int JACKSON = 30002; + private static final int CAPTAIN_BATHIS = 30332; + // Monsters + private static final int GIANT_SPIDER = 20103; + private static final int GIANT_FANG_SPIDER = 20106; + private static final int GIANT_BLADE_SPIDER = 20108; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10982_SpiderHunt() + { + super(10982); + addStartNpc(JACKSON); + addTalkId(JACKSON, CAPTAIN_BATHIS); + addKillId(GIANT_SPIDER, GIANT_FANG_SPIDER, GIANT_BLADE_SPIDER); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_SPIDER_HUNT); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30002-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-117409, 227185, -2896); + break; + } + case "NEXT_QUEST": + { + htmltext = "30002.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.KILL_GIANT_SPIDERS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30002.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case JACKSON: + { + if (qs.isCond(1)) + { + htmltext = "30002-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == JACKSON) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/no_lvl.html new file mode 100644 index 0000000000..377f13f2a7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10982_SpiderHunt/no_lvl.html @@ -0,0 +1,3 @@ +Trader Vollodov:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150-02.htm new file mode 100644 index 0000000000..d035c1fe7a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150-02.htm @@ -0,0 +1,5 @@ +Trader Herbiel:
+I heard that Captain Bathis of GLudio Castle is looking for some spider web. He wants to make a rope with that. I wonder for what?
+Would you like to try, adventurer?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150.htm new file mode 100644 index 0000000000..3d0d58eb4f --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30150.htm @@ -0,0 +1,4 @@ +Trader Herbiel:
+Im feeling great. It is not much, but please take it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-01.htm new file mode 100644 index 0000000000..0b7098a137 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-01.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+Have you seen the Goblin Raiders and the Kaboo Orcs outside the village? They are very violent. +Herbiel was chased by them before. That is why he is looking for someone to beat them up.
+Will you help?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-02.htm new file mode 100644 index 0000000000..5124e80aea --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/30599-02.htm @@ -0,0 +1,7 @@ +Newbie Guide:
+Thank you!
+Please beath up 20 Goblin Raiders and Kaboo Orcs causing trouble in front of the village.
+If you are going to hunting ground, I can send you there. You say it is too close?
+Still, I like doing this. Just let me know.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/Q10983_TroubledForest.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/Q10983_TroubledForest.java new file mode 100644 index 0000000000..bd56710af1 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/Q10983_TroubledForest.java @@ -0,0 +1,191 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10983_TroubledForest; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Troubled Forest (10983) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10983_TroubledForest extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 30599; + private static final int HERBIEL = 30150; + // Monsters + private static final int GOBLIN_RAIDER = 20325; + private static final int KABOO_ORC = 20468; + // Items + private static final ItemHolder SOE_TO_HERBIEL = new ItemHolder(91647, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10983_TroubledForest() + { + super(10983); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, HERBIEL); + addKillId(GOBLIN_RAIDER, KABOO_ORC); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_TROUBLED_FOREST); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(52746, 49932, -3480); + break; + } + case "30599-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30150-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Herbiel.", 5000)); + giveItems(killer, SOE_TO_HERBIEL); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.KILL_ORCS_AND_GOBLINS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30599-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "30599-02.htm"; + } + break; + } + case HERBIEL: + { + if (qs.isCond(2)) + { + htmltext = "30150.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10983_TroubledForest/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150-01.html new file mode 100644 index 0000000000..79d42c9dae --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150-01.html @@ -0,0 +1,4 @@ +Trader Herbiel:
+I think 30 Spider Webs should be enough. Once you get it, go to straight to Captain Bathis.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150.htm new file mode 100644 index 0000000000..6cb53a347d --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30150.htm @@ -0,0 +1,5 @@ +Trader Herbiel:
+I heard that Captain Bathis of Gludio Castle is looking for some spider web. He want to make a rope with that. I wonder for what?
+Would you like to try, adventurer?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-01.html new file mode 100644 index 0000000000..2b875ffbd1 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-02.html new file mode 100644 index 0000000000..1cf3b76755 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-03.html new file mode 100644 index 0000000000..689e630ff4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332.html new file mode 100644 index 0000000000..b8d5435231 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/30332.html @@ -0,0 +1,9 @@ +Captain Bathis:
+Lets see
+Hm, this should be enough.
+I cant tell you the details, but there are many creatures in the swamp these days. Im prepared for it. It is nothing to be worried about.
+Since you helped me. I looked for armor that could fit you. Pick one that you would like.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Q10984_CollectSpiderweb.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Q10984_CollectSpiderweb.java new file mode 100644 index 0000000000..acaeaaec5d --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Q10984_CollectSpiderweb.java @@ -0,0 +1,276 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10984_CollectSpiderweb; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Collect Spiderweb (10984) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10984_CollectSpiderweb extends Quest +{ + // NPCs + private static final int HERBIEL = 30150; + private static final int CAPTAIN_BATHIS = 30332; + // Monsters + private static final int HOOK_SPIDER = 20308; + private static final int CRIMSON_SPIDER = 20460; + private static final int PINCER_SPIDER = 20466; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10984_CollectSpiderweb() + { + super(10984); + addStartNpc(HERBIEL); + addTalkId(HERBIEL, CAPTAIN_BATHIS); + addKillId(HOOK_SPIDER, CRIMSON_SPIDER, PINCER_SPIDER); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_SPIDER_WEB); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30150-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(5135, 68148, -3256); + break; + } + case "NEXT_QUEST": + { + htmltext = "30150.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + // TODO: Find correct ID of string + holder.add(new NpcLogListHolder(NpcStringId.LV_15_20_SPIDER_WEB_IN_PROGRESS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30150.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case HERBIEL: + { + if (qs.isCond(1)) + { + htmltext = "30150-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == HERBIEL) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/no_lvl.html new file mode 100644 index 0000000000..377f13f2a7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10984_CollectSpiderweb/no_lvl.html @@ -0,0 +1,3 @@ +Trader Vollodov:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137-02.htm new file mode 100644 index 0000000000..926508fb84 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137-02.htm @@ -0,0 +1,6 @@ +Trader Vollodos:
+Lets see... Some accessories... And a Scroll of Escape.
+Oh, Im sorry.
+This isnt to make up for it, but I heard that Captain Bathis of Gludio Castle is looking for someone to help. Are you interested?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137.htm new file mode 100644 index 0000000000..3b930c159a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30137.htm @@ -0,0 +1,4 @@ +Trader Vollodos:
+I heard about you from the Newbie Guide. Here is the item.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-01.htm new file mode 100644 index 0000000000..1fb597315e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-01.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+Did you see the goblins in front of the village? There are even dirty Imps.
+I need them to disappear to feel better.
+You want to try?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-02.htm new file mode 100644 index 0000000000..6efa203746 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/30600-02.htm @@ -0,0 +1,5 @@ +Newbie Guide:
+Take a care of those dirty bastards.
Get rid of those Imps, Goblins, and Ashen Wolves. How many you ask? About 20 should be enough.
+Dont you want to go now? I can send you there.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/Q10985_CleaningUpTheGround.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/Q10985_CleaningUpTheGround.java new file mode 100644 index 0000000000..18fde42628 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/Q10985_CleaningUpTheGround.java @@ -0,0 +1,192 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10985_CleaningUpTheGround; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Cleaning-Up The Ground (10985) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10985_CleaningUpTheGround extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 30600; + private static final int VOLODOS = 30137; + // Monsters + private static final int ASHEN_WOLF = 20456; + private static final int GOBLIN = 20003; + private static final int IMP = 20004; + // Items + private static final ItemHolder SOE_TO_VOLLODOS = new ItemHolder(91648, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10985_CleaningUpTheGround() + { + super(10985); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, VOLODOS); + addKillId(ASHEN_WOLF, GOBLIN, IMP); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_CLEANING_UP_THE_GROUNDS); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(8945, 3529, -2504); + break; + } + case "30600-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30137-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory.", 5000)); + giveItems(killer, SOE_TO_VOLLODOS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.LV_15_20_TERRIBLE_SWAMP_MONSTERS_2.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30600-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "30600-02.htm"; + } + break; + } + case VOLODOS: + { + if (qs.isCond(2)) + { + htmltext = "30137.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10985_CleaningUpTheGround/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137-01.html new file mode 100644 index 0000000000..6617bc88e9 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137-01.html @@ -0,0 +1,7 @@ +Trader Vollodos:
+Captain Bathis asked to get rid of the Undead in the Swampland. I heard that there are Marsh Zombies and Dark Horrors.
+Im counting on you.
+But it is pretty far to walk all the way to the Swampland.
+If you are going to the hunting ground, I can help you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137.htm new file mode 100644 index 0000000000..7e8b8f721c --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30137.htm @@ -0,0 +1,6 @@ +Trader Vollodos:
+Captain Bathis of Gludio Castle is looking for someone to take care of the Undead in the Swamplant.
+Gludio Castle is so far from here, so Im not sure why he requested that.
+Will you do it?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-01.html new file mode 100644 index 0000000000..6f04342a95 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-02.html new file mode 100644 index 0000000000..27fd839dc4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-03.html new file mode 100644 index 0000000000..b4909c23c3 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332.html new file mode 100644 index 0000000000..0630ffe84f --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/30332.html @@ -0,0 +1,7 @@ +Captain Bathis:
+I heard from Vollodos. You are skilled. if there were more monsters in the swamp, they might have come to Gludio. Thank you
+its not much, but pick an armor piece.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Q10986_SwampMonster.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Q10986_SwampMonster.java new file mode 100644 index 0000000000..3c827baa31 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Q10986_SwampMonster.java @@ -0,0 +1,276 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10986_SwampMonster; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Swamp Monsters (10986) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10986_SwampMonster extends Quest +{ + // NPCs + private static final int VOLODOS = 30137; + private static final int CAPTAIN_BATHIS = 30332; + // Monsters + private static final int MARSH_ZOMBIE = 20015; // NOTE: Zombie Forest Elf in old client + private static final int MARSH_ZOMBIE_SCOUT = 20020; // NOTE: Zombie Forest Elf Resercher in old client + private static final int DARK_HORROR = 20105; + private static final int LESSER_DARK_HORROR = 20025; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10986_SwampMonster() + { + super(10986); + addStartNpc(VOLODOS); + addTalkId(VOLODOS, CAPTAIN_BATHIS); + addKillId(MARSH_ZOMBIE, MARSH_ZOMBIE_SCOUT, DARK_HORROR, LESSER_DARK_HORROR); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_TERRIBLE_SWAMP_MONSTERS); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30137-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-19004, 47388, -3608); + break; + } + case "NEXT_QUEST": + { + htmltext = "30137.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.KILL_ZOMBIES_AND_DARK_HORRORS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30137.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case VOLODOS: + { + if (qs.isCond(1)) + { + htmltext = "30137-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == VOLODOS) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/no_lvl.html new file mode 100644 index 0000000000..377f13f2a7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10986_SwampMonster/no_lvl.html @@ -0,0 +1,3 @@ +Trader Vollodov:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560-02.htm new file mode 100644 index 0000000000..3849d29c43 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560-02.htm @@ -0,0 +1,4 @@ +Trader Uska:
+I heard someting that might help you. The Maraku Werewolves seem to be scheming something. Its something they always do, but it looks like it is something big this time. Even Captain Bathis from Gludio Castle is worried about what the Maraku Werewolves are up to. How about taking care of the Maraku Werewolves and going to Bathis?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560.htm new file mode 100644 index 0000000000..6e12fad516 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30560.htm @@ -0,0 +1,4 @@ +Trader Uska:
+I heard that you beat those guys up. Our ancestors will be able to rest in peace.Here is the item I was storing. Thank you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-01.htm new file mode 100644 index 0000000000..4236cc4530 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-01.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+You know that many ancestora are resting in the Valley of Heroes, right?
+But it looks like the Kasha Wolves and Goblin Tomb Raiders have been damaging the tombs. +Will you take care of those bastards? I have left some rewards with Uska, so go after you finish the job.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-02.htm new file mode 100644 index 0000000000..cecc18fb8d --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/30602-02.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+Hunt those Kasha Wolves, Goblin Tomb Raiders, and Rakeclaw Imps. They dared to damage the tombs of our ancestors.
+20 of them should be enough. And one you are done, go find Uska. I left some rewards with him.
+If you are going to hunting ground, I can send you there. + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/Q10987_PlunderedGraves.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/Q10987_PlunderedGraves.java new file mode 100644 index 0000000000..4e1bad3e59 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/Q10987_PlunderedGraves.java @@ -0,0 +1,193 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10987_PlunderedGraves; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Plundered Graves (10987) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10987_PlunderedGraves extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 30602; + private static final int USKA = 30560; + // Monsters + private static final int KASHA_WOLF = 20475; + private static final int KASHA_TIMBER_WOLF = 20477; // NOTE: Kasha Forest Wolf in old client + private static final int GOBLIN_TOMB_RAIDER = 20319; + private static final int RAKECLAW_IMP_HUNTER = 20312; + // Items + private static final ItemHolder SOE_TO_USKA = new ItemHolder(91649, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10987_PlunderedGraves() + { + super(10987); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, USKA); + addKillId(KASHA_WOLF, KASHA_TIMBER_WOLF, GOBLIN_TOMB_RAIDER, RAKECLAW_IMP_HUNTER); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_PLUNDERED_GRAVES); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(-39527, -117654, -1840); + break; + } + case "30602-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30560-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory.", 5000)); + giveItems(killer, SOE_TO_USKA); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.TRACK_DOWN_GRAVE_ROBBERS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30602-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "30602-02.htm"; + } + break; + } + case USKA: + { + if (qs.isCond(2)) + { + htmltext = "30560.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10987_PlunderedGraves/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-01.html new file mode 100644 index 0000000000..fa81f9262e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-02.html new file mode 100644 index 0000000000..06fa472c01 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-03.html new file mode 100644 index 0000000000..e6f3074f08 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332.html new file mode 100644 index 0000000000..b9badfc706 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30332.html @@ -0,0 +1,9 @@ +Captain Bathis:
+Its you- The one who made Maraku Werevolves shiver...
+I was worrived about what they were up to, but thanks to you, I am relived.
+What? +You look curious. But Im sorry. I dont think I can tell you. I will give you an armor instead, so pick one you like.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560-01.html new file mode 100644 index 0000000000..06db3942b4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560-01.html @@ -0,0 +1,4 @@ +Trader Uska:
+I heard that the Maraku Werewolves are raising spiders to do something. We better give them a warning. Defeating 30 of them should be good enough of a warning. Will you go?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560.htm new file mode 100644 index 0000000000..6d1e88043b --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/30560.htm @@ -0,0 +1,6 @@ +Trader Uska:
+You want to know what counts as a warning?
+Lets me see... Defeat 30 of Maraku Werewolfs, and that should do the trick.
+Will you do it?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Q10988_Conspiracy.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Q10988_Conspiracy.java new file mode 100644 index 0000000000..4561d5b6dc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Q10988_Conspiracy.java @@ -0,0 +1,276 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10988_Conspiracy; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Conspiracy (10988) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10988_Conspiracy extends Quest +{ + // NPCs + private static final int USKA = 30560; + private static final int CAPTAIN_BATHIS = 30332; + // Monsters + private static final int KASHA_SPIDER = 20474; + private static final int KASHA_BLADE_SPIDER = 20478; + private static final int MARAKU_WEREVOLF_CHIEFTAIN = 20364; + private static final int EVIL_EYE_PATROL = 20428; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10988_Conspiracy() + { + super(10988); + addStartNpc(USKA); + addTalkId(USKA, CAPTAIN_BATHIS); + addKillId(KASHA_SPIDER, KASHA_BLADE_SPIDER, MARAKU_WEREVOLF_CHIEFTAIN, EVIL_EYE_PATROL); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_CONSPIRACY); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30560-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(13136, -131688, -1312); + break; + } + case "NEXT_QUEST": + { + htmltext = "30560.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.EXPOSE_A_PLOT_OF_MARAKU_WEREWOLVES.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30560.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case USKA: + { + if (qs.isCond(1)) + { + htmltext = "30560-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == USKA) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/no_lvl.html new file mode 100644 index 0000000000..377f13f2a7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10988_Conspiracy/no_lvl.html @@ -0,0 +1,3 @@ +Trader Vollodov:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-01.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-01.htm new file mode 100644 index 0000000000..092fc107c3 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-01.htm @@ -0,0 +1,6 @@ +Newbie Guide:
+I heard that Wolves and keltiers are wandering in front of the village. Those things get in the way of work. Especially when sending food to the mines, those Gnomes make some loud noises, so people hate it.
+I want to show them away. Can you help?
+If you help, I will talk to Gerald and get you some accessories.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-02.htm new file mode 100644 index 0000000000..07beea2b5f --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30601-02.htm @@ -0,0 +1,5 @@ +Newbie Guide:
+Thank you. Hunt 20 from either Longtail Keltirs , Elder Longtail Keltirs, or Black Wolves. +Get going.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650-02.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650-02.htm new file mode 100644 index 0000000000..26ce6412c3 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650-02.htm @@ -0,0 +1,5 @@ +Priest of the Earth Gerald:
+I heard the Captain Bathis from Gludio Castle has been looking for tarantula by-products... +Are you interested?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650.htm new file mode 100644 index 0000000000..8953b11618 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/30650.htm @@ -0,0 +1,4 @@ +Priest of the Earth Gerald:
+I heard about you from the Newbie Guide. You kicked out those rats from around the village. This is a token of my appreciation. Please take it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/Q10989_DangerousPredators.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/Q10989_DangerousPredators.java new file mode 100644 index 0000000000..a3773339c7 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/Q10989_DangerousPredators.java @@ -0,0 +1,192 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10989_DangerousPredators; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Dangerous Predators (10989) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10989_DangerousPredators extends Quest +{ + // NPCs + private static final int NEWBIE_GUIDE = 30601; + private static final int GERALD = 30650; + // Monsters + private static final int LONGTAIL_KELTIR = 20533; + private static final int ELDER_LONGTAIL_KELTIR = 20539; + private static final int BLACK_WOLF = 21983; + // Items + private static final ItemHolder SOE_TO_GERAILD = new ItemHolder(91650, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10); + private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2); + private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2); + private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10989_DangerousPredators() + { + super(10989); + addStartNpc(NEWBIE_GUIDE); + addTalkId(NEWBIE_GUIDE, GERALD); + addKillId(LONGTAIL_KELTIR, ELDER_LONGTAIL_KELTIR, BLACK_WOLF); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_2_20_DANGEROUS_PREDATORS); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(115960, -174659, -960); + break; + } + case "30601-02.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30650-02.htm": + { + if (qs.isStarted()) + { + addExpAndSp(player, 260000, 6000); + giveItems(player, SOE_NOVICE); + giveItems(player, RING_NOVICE); + giveItems(player, EARRING_NOVICE); + giveItems(player, NECKLACE_NOVICE); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < 20) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Priest of the Earth Gerald.", 5000)); + giveItems(killer, SOE_TO_GERAILD); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.KILL_WOLVES_AND_BEARDED_KELTIRS_2.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30601-01.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case NEWBIE_GUIDE: + { + if (qs.isCond(1)) + { + htmltext = "30601-02.htm"; + } + break; + } + case GERALD: + { + if (qs.isCond(2)) + { + htmltext = "30650.htm"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == NEWBIE_GUIDE) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/no_lvl.html new file mode 100644 index 0000000000..cdb9089e5a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10989_DangerousPredators/no_lvl.html @@ -0,0 +1,3 @@ +Newbie Guide:
+You do not meet the requirements of the quest (Quest is only available to 2-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-01.html new file mode 100644 index 0000000000..d02dd3f118 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-01.html @@ -0,0 +1,14 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Armor

+[Recommended Classes]
+Warrior(Humans) +Knight(Humans) +Elven Knight(Elves) +Palus Knight(Dark Elves) +Orc Raider(Orcs) +Scavenger(Dwarves) +Artisan(Dwarves) +Trooper(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-02.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-02.html new file mode 100644 index 0000000000..81530bba2e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-02.html @@ -0,0 +1,12 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Outfit

+[Recommended Classes]
+Rogue(Humans) +Elven Scout(Elves) +Assassin(Dark Elves) +Orc Monk(Orcs) +Soul Finder(Jin Kamael)) +Warder(Jin Kamael)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-03.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-03.html new file mode 100644 index 0000000000..8721fb22af --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332-03.html @@ -0,0 +1,13 @@ +Captain Bathis:
+If you want to transfer to the following classes, I recommend Moonshadow Doublet

+[Recommended Classes]
+Wizard(Humans) +Cleric(Humans) +Elven Wizard(Elves) +Oracle(Elves) +Dark Wizard(Dark Elves) +Shillien Oracle(Dark Elves) +Orc Shaman(Orcs)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332.html new file mode 100644 index 0000000000..ff44c3519a --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30332.html @@ -0,0 +1,9 @@ +Captain Bathis:
+You came from Dwarven Village?
+Oh, you brought Tarantulas Venom Sac. +One, two, three, four... Hm. 30. Great work. +Here is the reward. I told Priest Gerald about. Pick the one you need.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650-01.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650-01.html new file mode 100644 index 0000000000..5914434459 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650-01.html @@ -0,0 +1,7 @@ +Priest of the Earth Gerald:
+Good thining.
+The venom is the Venom Sacs turns quickly, so take them directly to Captain Bathis. He will pay you for your work.
+Now you should head out to the hunting ground. +Please let me know if you are ready.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650.htm new file mode 100644 index 0000000000..006b351334 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/30650.htm @@ -0,0 +1,5 @@ +Priest of the Earth Gerald:
+I heard that Captain Bathis is looking for Tarantulas Venom Sacs. I heard something about Maraku Werewolves, but Im not sure about details.
+He said he needed about 30. Would you like to give it a try?
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/HeavyArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/HeavyArmor.html new file mode 100644 index 0000000000..2fcb41f5fc --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/HeavyArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Armor.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/LightArmor.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/LightArmor.html new file mode 100644 index 0000000000..afa3575eee --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/LightArmor.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Ourfit.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Q10990_PoisonExtraction.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Q10990_PoisonExtraction.java new file mode 100644 index 0000000000..53f088a4c0 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Q10990_PoisonExtraction.java @@ -0,0 +1,280 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package quests.Q10990_PoisonExtraction; + +import java.util.HashSet; +import java.util.Set; + +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.NpcStringId; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Poison Extraction (10990) + * @author RobikBobik + * @Notee: Based on NA server September 2019 + */ +public class Q10990_PoisonExtraction extends Quest +{ + // NPCs + private static final int GERALD = 30650; + private static final int CAPTAIN_BATHIS = 30332; + // Monsters + private static final int HUNTER_TARANTULA = 20403; + private static final int PLUNDER_TARANTULA = 20508; + // Items + private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1); + private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20); + private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50); + private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item + private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1); + // HELMET FOR ALL ARMORS + private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1); + // HEAVY + private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1); + private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1); + private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1); + // LIGHT + private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1); + private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1); + private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1); + // ROBE + private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1); + private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1); + private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1); + // Misc + private static final int MAX_LEVEL = 20; + private static final String KILL_COUNT_VAR = "KillCount"; + + public Q10990_PoisonExtraction() + { + super(10990); + addStartNpc(GERALD); + addTalkId(GERALD, CAPTAIN_BATHIS); + addKillId(HUNTER_TARANTULA, PLUNDER_TARANTULA); + addCondMaxLevel(MAX_LEVEL, "no_lvl.html"); + setQuestNameNpcStringId(NpcStringId.LV_15_20_POISON_EXTRACTION); + } + + @Override + public boolean checkPartyMember(PlayerInstance member, Npc npc) + { + final QuestState qs = getQuestState(member, false); + return ((qs != null) && qs.isStarted()); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30650-01.html": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30332-01.html": + { + htmltext = event; + break; + } + case "30332-02.html": + { + htmltext = event; + break; + } + case "30332-03.html": + { + htmltext = event; + break; + } + case "30332.html": + { + htmltext = event; + break; + } + + case "TELEPORT_TO_HUNTING_GROUND": + { + player.teleToLocation(135382, -207694, -3704); + break; + } + case "NEXT_QUEST": + { + htmltext = "30650.htm"; + break; + } + case "HeavyArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_ARMOR); + giveItems(player, MOON_GAUNTLETS); + giveItems(player, MOON_BOOTS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "LightArmor.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_SHELL); + giveItems(player, MOON_LEATHER_GLOVES); + giveItems(player, MOON_SHOES); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + case "Robe.html": + { + if (qs.isStarted()) + { + addExpAndSp(player, 600000, 13500); + giveItems(player, SOE_NOVICE); + giveItems(player, SPIRIT_ORE); + giveItems(player, HP_POTS); + giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT); + giveItems(player, MOON_HELMET); + giveItems(player, MOON_CAPE); + giveItems(player, MOON_SILK); + giveItems(player, MOON_SANDALS); + player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000)); + qs.exitQuest(false, true); + htmltext = event; + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1)) + { + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + + if (killer.isGM()) + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + } + else if (killCount < 30) + { + qs.set(KILL_COUNT_VAR, killCount); + playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); + sendNpcLogList(killer); + + } + else + { + qs.setCond(2, true); + qs.unset(KILL_COUNT_VAR); + killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000)); + giveItems(killer, SOE_TO_CAPTAIN_BATHIS); + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(1)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NpcStringId.LV_15_20_POISON_EXTRACTION_IN_PROGRESS.getId(), true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated()) + { + htmltext = "30650.htm"; + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case GERALD: + { + if (qs.isCond(1)) + { + htmltext = "30650-01.html"; + } + break; + } + case CAPTAIN_BATHIS: + { + if (qs.isCond(2)) + { + htmltext = "30332.html"; + } + break; + } + } + } + else if (qs.isCompleted()) + { + if (npc.getId() == GERALD) + { + htmltext = getAlreadyCompletedMsg(player); + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Robe.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Robe.html new file mode 100644 index 0000000000..034926cc34 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/Robe.html @@ -0,0 +1,5 @@ +Captain Bathis:
+You picked Moonshadow Robe.

+You are getting stronger very quickly, so if you have reached level 20, go to the village and start your class transfer. You will get even stronger.
+I ve prepared a few things for you. Hope that the HP Potions, and the Rice Cake of Flaming Fighting Spirit are useful. + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/no_lvl.html b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/no_lvl.html new file mode 100644 index 0000000000..721c1b32e8 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/Q10990_PoisonExtraction/no_lvl.html @@ -0,0 +1,3 @@ +Priest of the Earth Gerald:
+You do not meet the requirements of the quest (Quest is only available to 15-20 levels). + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/QuestMasterHandler.java index 2564972303..ff3fad3ac5 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -41,6 +41,19 @@ import quests.Q00662_AGameOfCards.Q00662_AGameOfCards; import quests.Q00933_ExploringTheWestWingOfTheDungeonOfAbyss.Q00933_ExploringTheWestWingOfTheDungeonOfAbyss; import quests.Q00935_ExploringTheEastWingOfTheDungeonOfAbyss.Q00935_ExploringTheEastWingOfTheDungeonOfAbyss; import quests.Q10866_PunitiveOperationOnTheDevilIsle.Q10866_PunitiveOperationOnTheDevilIsle; +import quests.Q10961_EffectiveTraining.Q10961_EffectiveTraining; +import quests.Q10962_NewHorizons.Q10962_NewHorizons; +import quests.Q10966_ATripBegins.Q10966_ATripBegins; +import quests.Q10981_UnbearableWolvesHowling.Q10981_UnbearableWolvesHowling; +import quests.Q10982_SpiderHunt.Q10982_SpiderHunt; +import quests.Q10983_TroubledForest.Q10983_TroubledForest; +import quests.Q10984_CollectSpiderweb.Q10984_CollectSpiderweb; +import quests.Q10985_CleaningUpTheGround.Q10985_CleaningUpTheGround; +import quests.Q10986_SwampMonster.Q10986_SwampMonster; +import quests.Q10987_PlunderedGraves.Q10987_PlunderedGraves; +import quests.Q10988_Conspiracy.Q10988_Conspiracy; +import quests.Q10989_DangerousPredators.Q10989_DangerousPredators; +import quests.Q10990_PoisonExtraction.Q10990_PoisonExtraction; import quests.not_done.Q00630_PirateTreasureHunt; import quests.not_done.Q00664_QuarrelsTime; import quests.not_done.Q00910_RequestFromTheRedLibraGuildLv1; @@ -105,6 +118,19 @@ public class QuestMasterHandler Q10868_TheDarkSideOfPower.class, // TODO: Not done. Q10870_UnfinishedDevice.class, // TODO: Not done. Q10871_DeathToThePirateKing.class, // TODO: Not done. + Q10961_EffectiveTraining.class, + Q10962_NewHorizons.class, + Q10966_ATripBegins.class, + Q10981_UnbearableWolvesHowling.class, + Q10982_SpiderHunt.class, + Q10983_TroubledForest.class, + Q10984_CollectSpiderweb.class, + Q10985_CleaningUpTheGround.class, + Q10986_SwampMonster.class, + Q10987_PlunderedGraves.class, + Q10988_Conspiracy.class, + Q10989_DangerousPredators.class, + Q10990_PoisonExtraction.class, }; public static void main(String[] args)