diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-04-09 13:33:57 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-04-09 13:33:57 -0300 |
commit | cf18ce071c79ae37e14ea38943e0b1d88da70a7b (patch) | |
tree | f9159c9b60b3018300dd22ffba0d797bc5e828e5 /npc/annuals/xmas | |
parent | 8a4bf716002a017de77fe7df301ef8e4aaf00a2e (diff) | |
download | serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.gz serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.bz2 serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.xz serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.zip |
Override
Diffstat (limited to 'npc/annuals/xmas')
-rwxr-xr-x | npc/annuals/xmas/barriers.txt | 155 | ||||
-rwxr-xr-x | npc/annuals/xmas/config.txt | 252 | ||||
-rwxr-xr-x | npc/annuals/xmas/core.txt | 229 | ||||
-rwxr-xr-x | npc/annuals/xmas/debug.txt | 220 | ||||
-rwxr-xr-x | npc/annuals/xmas/helpers.txt | 44 | ||||
-rwxr-xr-x | npc/annuals/xmas/list.txt | 98 | ||||
-rwxr-xr-x | npc/annuals/xmas/mobmanager.txt | 77 | ||||
-rwxr-xr-x | npc/annuals/xmas/reagents.txt | 139 | ||||
-rwxr-xr-x | npc/annuals/xmas/states.txt | 51 |
9 files changed, 1265 insertions, 0 deletions
diff --git a/npc/annuals/xmas/barriers.txt b/npc/annuals/xmas/barriers.txt new file mode 100755 index 00000000..fefacc00 --- /dev/null +++ b/npc/annuals/xmas/barriers.txt @@ -0,0 +1,155 @@ + +function script ThrowOutTheBum { + @getout = 0; + if((@xmas_thrown_out) && ($@xmas_time)) + goto L_SideOut; + goto L_Return; + +L_SideOut: + if(@xmas_helper_start_state) + goto L_Warp; + goto L_Hint; + +L_Hint: + message strcharinfo(0), "I said get out! We've got no time for your kind here."; + mes "[Orum's Homunculus]"; + mes "\"What are you doing? Come, see me in the caves below!\""; + mes "\"I said go north till you reach the snowman. Then head into the cave to the east.\""; + close2; + warp "020-1",33,94; + @getout = 1; + goto L_Return; + +L_Warp: + message strcharinfo(0), "I said get out, We've no time for your kind here."; + warp "020-1",33,94; + @getout = 1; + goto L_Return; + +L_Return: + return; +} + +030-2,153,21,0 script #DarkDoor NPC45,0,0,{ + callfunc "XmasStates"; + + if((@xmas_boss_door_state) && ($@xmas_time)) + goto L_XmasMain; + goto L_NotActive; + +L_XmasMain: + mes "You get the strange sensation that this might go terribly wrong. You had better bring some of your strongest comrades to help you in that case."; + mes "Open the warehouse door?"; + menu + "Yes, I feel brave.", L_Open, + "No, It's quite nice out here.", L_close; + +L_Open: + if ($@XmasBattleStatus) goto L_BattleInProgress; + warp "030-4",34,48; + goto L_close; + +L_BattleInProgress: + mes "You can hear shouts and screams of despair from behind the door. But trying to open it fails."; + next; + mes "You will have to wait till someone from the inside opens the door again."; + goto L_close; + +L_NotActive: + message strcharinfo(0), "This door appears locked by magical forces."; + end; + +L_close: + close; +} + + +030-3,27,24,0 script SmallCrack#XmasPassage NPC400,0,1,{ + callfunc "XmasStates"; + + if((@xmas_basement_passage) && ($@xmas_time)) + goto L_XmasMain; + goto L_NotActive; + +L_NotActive: + mes "You don't notice anything special."; + goto L_close; + +L_XmasMain: + mes "You notice a small creak in the wall, what do you want to do?"; + next; + goto L_EnterDialogue; + +L_EnterDialogue: + menu + "Nothing.", L_close, + "Bang my head against it repeatedly.", L_Tux9th, + "Oh, not very much, I do not see anynthing there.", L_close, + "Hit it with my strong fist.", L_Enter; + +L_Tux9th: + heal -20, 0; + message strcharinfo(0), "Ouch, that hurt!"; + setlook LOOK_HAIR_STYLE, rand(20); + goto L_Fail; + +L_Enter: + if (getequipid(equip_hand1) > 0 || getequipid(equip_hand2) > 0) goto L_Sword; + if (getequipid(equip_gloves) <= 0) goto L_Gloves; + goto L_QueryWarp; + +L_Sword: + mes "That is not your fist silly,"; + mes "use your fist, alright?"; + goto L_close; + +L_Gloves: + mes "Wow! Next time you plan to hit a wall,"; + mes "you had better equip some decent gloves in advance."; + heal -20, 0; + message strcharinfo(0), "Ouch, that hurt!"; + goto L_QueryWarp; + +L_QueryWarp: + mes "You gaze into a black hole, do you want to enter?"; + mes " "; + menu + "Yes", L_Warp, + "No", L_close; + +L_Warp: + warp "030-2",47,44; + goto L_close; + +L_Fail: + mes "Seems like that won't work out as you planned."; + goto L_close; + +L_close: + close; +} + +030-2,48,44,0 script #BasementDoor NPC45,0,0,{ + callfunc "XmasStates"; + + if((@xmas_basement_passage) && ($@xmas_time)) + goto L_XmasMain; + goto L_NotActive; + +L_XmasMain: + mes "Descend into the caves?"; + menu + "Yes.", L_Open, + "No.", L_close; + +L_Open: + warp "030-3",27,26; + goto L_close; + +L_NotActive: + message strcharinfo(0), "This door appears locked by magical forces."; + end; + +L_close: + close; +} diff --git a/npc/annuals/xmas/config.txt b/npc/annuals/xmas/config.txt new file mode 100755 index 00000000..807b3b9f --- /dev/null +++ b/npc/annuals/xmas/config.txt @@ -0,0 +1,252 @@ + + +- script #XmasConfig NPC32767,{ + end; + +OnCommandRestartQuest: + goto L_Main; + +OnInit: + goto L_Main; + +L_Main: + // Xmas Key Identifier Set through Botcheck Debug + if(!($XMAS_TIME_KEY) || (getarraysize($XMAS_TIME_KEY) != 6)) + setarray $XMAS_TIME_KEY, 12,12,1,25,6,gettime(7); + if(($XMAS_TIME_KEY[0] == 0) || ($XMAS_TIME_KEY[0] > 12)) + goto L_XmasError; + if(($XMAS_TIME_KEY[1] == 0) || ($XMAS_TIME_KEY[1] > 12)) + goto L_XmasError; + if(($XMAS_TIME_KEY[2] == 0) || ($XMAS_TIME_KEY[2] > 12)) + goto L_XmasError; + if(($XMAS_TIME_KEY[3] == 0) || ($XMAS_TIME_KEY[3] > 31)) + goto L_XmasError; + if(($XMAS_TIME_KEY[4] == 0) || ($XMAS_TIME_KEY[4] > 31)) + goto L_XmasError; + if($XMAS_TIME_KEY[5] == 0) + goto L_XmasError; + + // Event Runs until Reward Period. + // Month Start/End + $@xmas_start_month = $XMAS_TIME_KEY[0]; + $@xmas_reward_start_month = $XMAS_TIME_KEY[1]; + $@xmas_end_month = $XMAS_TIME_KEY[2]; + + // Reward Day Start/End + $@xmas_reward_start_day = $XMAS_TIME_KEY[3]; + $@xmas_reward_end_day = $XMAS_TIME_KEY[4]; + + // Time Settings + $@xmas_no_event_time = 0; + $@xmas_event_time = 1; + $@xmas_reward_time = 2; + + // Main Quest Settings + // Bit used to Set Which one of the 2 quests you are on + $@xmas_side_bit = (1 << 31); + $@xmas_base_bonus_xp = 4; + $@xmas_karma_bonus = 1; + $@xmas_reward_max_karma = 15; + $@xmas_reward_hero_boss = 15; + $@xmas_reward_all_lists = 10; + $@xmas_reward_all_helpers = 10; + $@xmas_reward_tally_rare = 80; + $@xmas_reward_tally_common = 40; + // Guidance System + $@xmas_route_bit = (1 << 23); + // Basement Passage way + $@xmas_basement_passage = (1 << 24); + // Thrown Out + $@xmas_thrown_out_bit = (1 << 25); + // Quest Start (@xmas_state) + $@xmas_list_path2_state = 1; + $@xmas_list_path1_state = 2; + $@xmas_list_both_state = 3; + $@xmas_list_complete_state = 4; + $@xmas_list_deliver_state = 5; + // Helper SubQuest + $@xmas_helpers_start_state = 6; + $@xmas_helpers_done_state = 7; + // Reagents + $@xmas_reagents_start = 8; + $@xmas_reagents_done = 9; + // Boss Door State + $@xmas_boss_door_open_state = 10; + // Reward State + $@xmas_reward_start = 11; + $@xmas_reward1_done = 12; + $@xmas_reward2_done = 13; + $@xmas_reward_done = 14; + + // Boss Fight Required Level for Hard Mode + $@BossHardLevel = 70; + $@xmas_boss_start_bit = (1 << 26); + $@xmas_boss_hero_bit = (1 << 27); + $@xmas_boss_start_shift = 26; + $@xmas_boss_hero_shift = 27; + setarray $@xmas_boss_req$, "IronPotion", "DarkCrystal"; + setarray $@xmas_boss_amount, 15, 10; + if(getarraysize($@xmas_boss_amount) != getarraysize($@xmas_boss_req$)) + goto L_XmasError; + // Santas Helper quest rewards + setarray $@SantasHelper_Annual_Reward$, + "RedTurtleneck", + "YellowTurtleneck", + "LightBlueTurtleneck", + "PinkTurtleneck", + "OrangeTurtleneck", + "PurpleTurtleneck", + "KnitCap", + "KnitCap"; + + // Main Quest rewards + setarray $@xmas_present_from$, "Santa", "Orum"; + setarray $@xmas_rare_reward$, "FunkyChristmasSweater", "DarkChristmasSweater"; + setarray $@xmas_uncommon_reward$, "NutcrackerHat", "AmberChristmasSweater", "RedStockings", "PinkChristmasSweater", "BlueChristmasSweater"; + // Quest Side 0 Settings + setarray $@xmas_zero_reagents$, "ShockSweet", "EmptyBottle", "EmeraldPowder"; + setarray $@xmas_zero_reagents_names$, "Shock Sweet", "Empty Bottles", "Emerald Powders"; + setarray $@xmas_zero_reagents_amounts, 1, 4, 10; + if(getarraysize($@xmas_zero_reagents_amounts) != getarraysize($@xmas_zero_reagents$)) + goto L_XmasError; + + // Quest Side 1 Settings + setarray $@xmas_one_reagents$, "DarkCrystal", "IronPotion", "EmeraldPowder"; + setarray $@xmas_one_reagents_names$, "Dark Crystal", "Iron Potions", "Emerald Powders"; + setarray $@xmas_one_reagents_amounts, 1, 4, 10; + if(getarraysize($@xmas_one_reagents_amounts) != getarraysize($@xmas_one_reagents$)) + goto L_XmasError; + + // List Bits + $@xmas_all_lists_bit = (1 << 29); + setarray $@xmas_child_list, (1 << 8), (1 << 9), (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15); + setarray $@xmas_child_list_name$, "Ayasha", "Latif", "Charda", "Faris", "Rasin", "Ghada", "Rossy", "Kadiya"; + if(getarraysize($@xmas_child_list) != getarraysize($@xmas_child_list_name$)) + goto L_XmasError; + + $@xmas_perfect_list_count = getarraysize($@xmas_child_list); + $@xmas_required_list_count = (getarraysize($@xmas_child_list) / 2); + + // Santa's Helper + $@xmas_sh_bit = (1 << 22); + $@xmas_sh_purple_amount = 25; + $@xmas_sh_blue_amount = 20; + $@xmas_sh_green_amount = 5; + + // Main Helper Bit + $@xmas_helper_bit = (1 << 30); + $@xmas_all_helpers_bit = (1 << 28); + + // Acorns + $@xmas_helper_bit_acorns = (1 << 21); + $@xmas_acorn_amount = 10; + $@xmas_iron_potion_amount = 1; + + // Bedding + $@xmas_helper_bit_bed_starts = (1 << 16); + $@xmas_helper_bit_bed_ends = (1 << 17); + $@xmas_bedding_amount = 10; + + // Boxes + $@xmas_log_amount = 2; + + // Wrap + $@xmas_reed_amount = 2; + $@xmas_water_amount = 1; + $@xmas_wrap_reward = 1; + + // Wrap Dye Amounts + $@xmas_poa_amount = 2; + $@xmas_wrap_yellow_amount = 2; + $@xmas_wrap_ltblue_amount = 2; + $@xmas_wrap_purple_amount = 2; + $@xmas_wrap_green_amount = 2; + + // Present Return + $@xmas_present_amount = 5; + + // Shipping + $@xmas_wrap_amount = 1; + $@xmas_empty_box_amount = 1; + $@xmas_ship_present_amount = 1; + + // Glitter + $@xmas_helper_bit_glitter_starts = (1 << 18); + $@xmas_helper_bit_glitter_ends = (1 << 19); + $@xmas_red_amount = 5; + $@xmas_yellow_amount = 5; + + // Storage (Daily Xmas) + $@xmas_helper_bit_storage = (1 << 20); + // Good Daily Ammounts + $@xmas_good_level = 30; + $@xmas_good_cost = 12; + $@xmas_good_count = 3; + $@xmas_good_name$ = "Candy"; + $@xmas_good_friendly_name$ = "Candies"; + $@xmas_good_money = 500; + $@xmas_good_exp = 200; + + // Bad Daily Ammounts + $@xmas_bad_level = 30; + $@xmas_bad_cost = 12; + $@xmas_bad_count = 3; + + $@xmas_bad_name$ = "RedApple"; + $@xmas_bad_friendly_name$ = "Red Apples"; + $@xmas_bad_money = 500; + $@xmas_bad_exp = 200; + + //Boss Fight Reward + $@xmas_boss_bp = 50; + + // Helpers Flags needed to set $@xmas_all_helpers_bit + setarray $@xmas_helper_list, $@xmas_helper_bit_bed_ends, $@xmas_helper_bit_glitter_ends, $@xmas_helper_bit_storage, $@xmas_helper_bit_acorns, $@xmas_sh_bit; + $@xmas_perfect_helpers_count = getarraysize($@xmas_helper_list); + $@xmas_required_helpers_count = (getarraysize($@xmas_helper_list) / 2); + + // MobManager + setarray $@xmas_mob_names$, "Santa Slime", "Candied Slime", "Candied Slime"; + setarray $@xmas_mob_spawns, "1015", "1111", "1111"; + setarray $@xmas_mob_counts, 10, 5, 5; + setarray $@xmas_map_spawns$, "019-1", "019-3", "030-3"; + if(getarraysize($@xmas_mob_spawns) != getarraysize($@xmas_map_spawns$)) + goto L_XmasError; + if(getarraysize($@xmas_mob_names$) != getarraysize($@xmas_map_spawns$)) + goto L_XmasError; + if(getarraysize($@xmas_mob_counts) != getarraysize($@xmas_map_spawns$)) + goto L_XmasError; + + $@xmas_spawn_x1 = 54; + $@xmas_spawn_y1 = 48; + $@xmas_spawn_x2 = 79; + $@xmas_spawn_y2 = 89; + $@xmas_respawn_count = 9; + + $@start_month = $@xmas_start_month; + $@end_month = $@xmas_end_month; + $@start_day = 1; + $@end_day = $@xmas_reward_end_day; + $@reward_start_month = $@xmas_reward_start_month; + $@reward_start_day = $@xmas_reward_start_day; + + callfunc "GetEventTime"; + $@xmas_time = $@event_time; + + if($@xmas_time == 0 && $XMAS_TIME_KEY[5] < gettime(7)) + setarray $XMAS_TIME_KEY, $XMAS_TIME_KEY[0],$XMAS_TIME_KEY[1],$XMAS_TIME_KEY[2],$XMAS_TIME_KEY[3],$XMAS_TIME_KEY[4],gettime(7); + goto L_Return; + +L_Return: + // technically this only needs to skip the npctimer in SpawnMobs, + // but this is a low-level debug setting so whatever. + if (debug >= 2) end; + callfunc "SpawnMobs"; + callfunc "PresentHandler"; + callfunc "ReplaceTrees"; + end; + +L_XmasError: + debugmes "Xmas is Dead Jim."; + mapexit; +} diff --git a/npc/annuals/xmas/core.txt b/npc/annuals/xmas/core.txt new file mode 100755 index 00000000..2abeefce --- /dev/null +++ b/npc/annuals/xmas/core.txt @@ -0,0 +1,229 @@ + +function script XmasNaughty { + @xmas_karma = ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT); + if((@xmas_karma - @karma_bonus) >= 0) + goto L_SetNaughty; + goto L_ResetNaughty; + +L_SetNaughty: + @xmas_karma = (@xmas_karma - @karma_bonus); + goto L_Return; + +L_ResetNaughty: + @xmas_karma = 0; + goto L_Return; + +L_Return: + XMASTIME = (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT)); + @karma_bonus = 0; + return; +} + +function script XmasNice { + @xmas_karma = ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT); + if((@xmas_karma + @karma_bonus) < 16) + goto L_SetNice; + goto L_ResetNice; + +L_SetNice: + @xmas_karma = (@karma_bonus + @xmas_karma); + goto L_Return; + +L_ResetNice: + @xmas_karma = 15; + goto L_Return; + +L_Return: + XMASTIME = (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT)); + @karma_bonus = 0; + return; +} + +function script XmasXpReward { + if (BaseLevel >= 10) + goto L_HigherLevel; + goto L_LowLevel; + +L_HigherLevel: + getexp ((BaseLevel / 10) * ($@xmas_base_bonus_xp * BaseLevel)), 0; + goto L_Return; + +L_LowLevel: + getexp ($@xmas_base_bonus_xp * BaseLevel), 0; + goto L_Return; + +L_Return: + return; +} + +function script XmasSetState { + XMASTIME = (XMASTIME & ~(NIBBLE_0_MASK) | (@xmas_state << NIBBLE_0_SHIFT)); + return; +} + +function script XmasSetSide { + XMASTIME = XMASTIME | $@xmas_side_bit; + return; +} + +function script XmasSetRoute { + XMASTIME = XMASTIME | $@xmas_route_bit; + return; +} + +function script XmasThrowOut { + XMASTIME = XMASTIME | $@xmas_thrown_out_bit; + return; +} + +function script XmasSetBossStart { + XMASTIME = XMASTIME | $@xmas_boss_start_bit; + return; +} + +function script XmasSetBossHero { + XMASTIME = XMASTIME | $@xmas_boss_hero_bit; + return; +} + +function script XmasSetReward { + @xmas_endgame = 0; + @xmas_reward_side = 0; + @xmas_reward_tally = 0; + if(@xmas_side) + goto L_SetSide; + goto L_NotSetSide; + +L_SetSide: + @xmas_reward_side = 1; + @xmas_reward_tally = (@xmas_reward_tally + ($@xmas_reward_max_karma - @xmas_karma)); + goto L_SetRewardBonus; + +L_NotSetSide: + @xmas_reward_tally = (@xmas_reward_tally + @xmas_karma); + goto L_SetRewardBonus; + +L_SetRewardBonus: + if(@xmas_boss_hero) + @xmas_reward_tally = (@xmas_reward_tally + $@xmas_reward_hero_boss); + if(@xmas_all_helpers) + @xmas_reward_tally = (@xmas_reward_tally + $@xmas_reward_all_helpers); + if(@xmas_all_lists) + @xmas_reward_tally = (@xmas_reward_tally + $@xmas_reward_all_lists); + //formula should: + if (@xmas_reward_tally > 5) + @xmas_reward_lower_bound = 2 * @xmas_reward_tally - rand(5); + if (@xmas_reward_tally <= 5) + @xmas_reward_lower_bound = @xmas_reward_tally; + @xmas_reward_upper_bound = @xmas_reward_lower_bound + ((Luk) / 5); + @xmas_reward = (rand(@xmas_reward_lower_bound, @xmas_reward_upper_bound)); + @xmas_reward_lower_bound = 0; + @xmas_reward_upper_bound = 0; + return; +} + +function script XmasMainXpBpReward { + callfunc "XmasSetReward"; + + if(BaseLevel >= 99) + goto L_EndGameReward; + goto L_LevelingReward; + +L_EndGameReward: + @xmas_bp_reward = 100 + rand(@xmas_reward, 2 * @xmas_reward); + BOSS_POINTS = BOSS_POINTS + @xmas_bp_reward; + message strcharinfo(0), "You gain " + @xmas_bp_reward + " Bosspoints, giving you a total of " + BOSS_POINTS + "."; + @xmas_bp_reward = 0; + return; + +L_LevelingReward: + if(@xmas_reward >= $@xmas_reward_tally_rare) + goto L_XmasLevel; + goto L_XmasExp; + +L_XmasLevel: + BaseLevel = BaseLevel + 1; + return; + +L_XmasExp: + getexp ((@xmas_reward * BaseLevel * (BaseLevel + 10)) / 10), 0; + return; +} + +function script XmasMainItemReward { + callfunc "XmasSetReward"; + + if (($@xmas_time == $@xmas_reward_time) && ((@xmas_reward_start_state) || (@xmas_reward1_done_state))) + goto L_FinalGift; + if (($@xmas_time == $@xmas_reward_time) && ((@xmas_reward_done_state) || (@xmas_reward2_done_state))) + goto L_GotGift; + if ($@xmas_time == $@xmas_reward_time) + goto L_NoGift; + goto L_Return; + +L_GotGift: + mes "Hey, this is not for you!"; + goto L_Return; + +L_NoGift: + mes "Oh someone got a present. Maybe you can get one too if help the right person?"; + goto L_Return; + +L_FinalGift: + mes "[To: " + strcharinfo(0) + "]"; + mes "[From: " + $@xmas_present_from$[@xmas_reward_side] + "]"; + mes "O look, a present from " + $@xmas_present_from$[@xmas_reward_side]; + next; + getinventorylist; + if (@inventorylist_count > 97) + goto L_FullInv; + @xmas_reward = (@xmas_reward + ((BaseLevel + 10)/10)); + if (debug > 0) + message strcharinfo(0), "Reward variable: " + @xmas_reward; + @xmas_uncommon_slot1 = rand(getarraysize($@xmas_uncommon_reward$)); + @xmas_uncommon_slot2 = rand(getarraysize($@xmas_uncommon_reward$)); + if(@xmas_reward >= $@xmas_reward_tally_rare) + @xmas_reward_item$ = $@xmas_rare_reward$[@xmas_reward_side]; + if(@xmas_reward >= $@xmas_reward_tally_common) + @xmas_reward_item1$ = $@xmas_uncommon_reward$[@xmas_uncommon_slot1]; + @xmas_reward_item2$ = $@xmas_uncommon_reward$[@xmas_uncommon_slot2]; + if(checkweight("Iten", 1) == 0) + goto L_FullInv; + if(@xmas_reward >= $@xmas_reward_tally_rare) + getitem @xmas_reward_item$, 1; + if(@xmas_reward >= $@xmas_reward_tally_common) + getitem @xmas_reward_item1$, 1; + getitem @xmas_reward_item2$, 1; + @xmas_uncommon_slot1 = 0; + @xmas_uncommon_slot2 = 0; + @xmas_reward_item$ = ""; + @xmas_reward_item1$ = ""; + @xmas_reward_item2$ = ""; + if (@xmas_reward_start_state) + @xmas_state = $@xmas_reward2_done; + if (@xmas_reward1_done_state) + @xmas_state = $@xmas_reward_done; + callfunc "XmasSetState"; + goto L_Return; + +L_FullInv: + mes "\"You have no place to put the present.\""; + goto L_Return; + +L_Return: + return; +} + +function script XmasCheckOld { + if(XMASYEAR == $XMAS_TIME_KEY[5]) + goto L_Return; + goto L_OldMatch; + +L_OldMatch: + XMASTIME = 0; + XMASYEAR = $XMAS_TIME_KEY[5]; + goto L_Return; + +L_Return: + return; +} diff --git a/npc/annuals/xmas/debug.txt b/npc/annuals/xmas/debug.txt new file mode 100755 index 00000000..f7ba17bd --- /dev/null +++ b/npc/annuals/xmas/debug.txt @@ -0,0 +1,220 @@ + +function script XmasDebug { + if(debug) + goto L_Debug; + goto L_Live; + +L_Live: + mes "What do you want to do?"; + menu + "Debug Vars", L_DebugLive, + "Xmas Time Key Change.", L_XmasTimeKey, + "Reset Xmas Chamber.", L_XmasChamberReset, + "Do nothing.", L_close; + +L_DebugLive: + mes "--Sever--"; + mes "Event State: " + $@xmas_time; + mes "Event Start" + $XMAS_TIME_KEY[0] + "/1"; + mes "Reward Start: " + $XMAS_TIME_KEY[1] + "/" + $XMAS_TIME_KEY[3]; + mes "Event End: " + $XMAS_TIME_KEY[2] + "/" + $XMAS_TIME_KEY[4]; + mes "Event Time Key (year (CCYY)): " + $XMAS_TIME_KEY[5]; + goto L_close; + +L_Debug: + mes "What do you want to do?"; + menu + "Debug Vars", L_DebugVars, + "Set Quest State.", L_XmasState, + "Set Karma. [0-15] 15 Nice", L_XmasKarma, + "Set All Lists", L_SetAllLists, + "Set All Helpers", L_SetAllHelpers, + "Set Boss Hero", L_SetBossHero, + "Reset Quest State.", L_Reset, + "Set Old Event Flag.", L_LastReset, + "Xmas Time Key Change.", L_XmasTimeKey, + "Reset Xmas Chamber.", L_XmasChamberReset, + "Do nothing.", L_close; + +L_DebugVars: + callfunc "XmasStates"; + mes "--Sever--"; + mes "Event State: " + $@xmas_time; + mes "Event Start" + $XMAS_TIME_KEY[0] + "/1"; + mes "Reward Start: " + $XMAS_TIME_KEY[1] + "/" + $XMAS_TIME_KEY[3]; + mes "Event End: " + $XMAS_TIME_KEY[2] + "/" + $XMAS_TIME_KEY[4]; + mes "Event Time Key (year (CCYY)): " + $XMAS_TIME_KEY[5]; + next; + mes "--Player--"; + mes "Player Event Time Key " + XMASYEAR; + mes "xmas_state: " + @xmas_state; + mes "xmas_karma: " + @xmas_karma; + mes "xmas_side: " + @xmas_side; + next; + mes "xmas_list_gather: " + @xmas_list_gather; + mes "xmas_list_complete: " + @xmas_list_complete; + mes "xmas_list_deliver: " + @xmas_list_deliver; + mes "xmas_helper_start_state: " + @xmas_helper_start_state; + mes "xmas_helper_done_state: " + @xmas_helper_done_state; + mes "xmas_reagent_start_state: " + @xmas_reagent_start_state; + mes "xmas_reagent_done_state: " + @xmas_reagent_done_state; + mes "xmas_boss_door_state: " + @xmas_boss_door_state; + mes "xmas_reward_start_state " + @xmas_reward_start_state; + mes "xmas_reward1_done_state " + @xmas_reward1_done_state; + mes "xmas_reward2_done_state " + @xmas_reward2_done_state; + mes "xmas_reward_done_state: " + @xmas_reward_done_state; + next; + mes "xmas_basement_passage: " + @xmas_basement_passage; + mes "xmas_thrown_out: " + @xmas_thrown_out; + mes "xmas_hard_mode: " + @xmas_boss_hero; + next; + mes "xmas_sweater: " + @xmas_sh_done; + next; + mes "xmas_all_lists: " + @xmas_all_lists; + next; + mes "xmas_helper_bit: " + @xmas_helper_bit; + mes "xmas_all_helpers: " + @xmas_all_helpers; + mes "xmas_helper_acorn: " + @xmas_helper_acorn; + mes "xmas_helper_bedding: " + @xmas_helper_bedding; + mes "xmas_helper_glitter: " + @xmas_helper_glitter; + mes "xmas_helper_storage: " + @xmas_helper_storage; + mes "xmas_knows_route: " + @xmas_knows_route; + goto L_close; + +L_LastReset: + XMASTIME = 255; + XMASYEAR = 2012; + goto L_close; + +L_Reset: + XMASTIME = 0; + XMASYEAR = $XMAS_TIME_KEY[5]; + goto L_close; + +L_XmasTimeKey: + mes "Xmas Time Key Change."; + mes "Start Month?"; + input @xmas_time_key_smonth; + if((@xmas_time_key_smonth == 0) || (@xmas_time_key_smonth > 12)) + goto L_XmasError; + mes "Reward Start Month?"; + input @xmas_time_key_srmonth; + if((@xmas_time_key_srmonth == 0) || (@xmas_time_key_srmonth > 12)) + goto L_XmasError; + mes "End Month?"; + input @xmas_time_key_emonth; + if((@xmas_time_key_emonth == 0) || (@xmas_time_key_emonth > 12)) + goto L_XmasError; + mes "Reward Start Day?"; + input @xmas_time_key_rsday; + if((@xmas_time_key_rsday == 0) || (@xmas_time_key_rsday > 31)) + goto L_XmasError; + mes "Reward End Day?"; + input @xmas_time_key_reday; + if((@xmas_time_key_reday == 0) || (@xmas_time_key_reday > 31)) + goto L_XmasError; + mes "Time Key (CCYY) "; + input @xmas_time_key_year; + goto L_SetNewKey; + +L_XmasError: + mes "Incorrect Entry. Try again."; + goto L_close; + +L_SetNewKey: + setarray $XMAS_TIME_KEY, @xmas_time_key_smonth, @xmas_time_key_srmonth, @xmas_time_key_emonth, @xmas_time_key_rsday, @xmas_time_key_reday, @xmas_time_key_year; + donpcevent "#XmasConfig::OnCommandRestartQuest"; + goto L_close; + +L_XmasChamberReset: + donpcevent "AniManOMat::OnCommandChamberReset"; + goto L_close; + +L_XmasState: + mes "Quest state?"; + input @xmas_state; + callfunc "XmasSetState"; + goto L_close; + +L_XmasKarma: + mes "Karma (0-15) 0: Naughty, 15: Good"; + input @xmas_karma; + XMASTIME = (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT)); + goto L_close; + +L_SetAllLists: + XMASTIME = XMASTIME | $@xmas_all_lists_bit; + goto L_close; + +L_SetAllHelpers: + XMASTIME = XMASTIME | $@xmas_all_helpers_bit; + goto L_close; + +L_SetBossHero: + XMASTIME = XMASTIME | $@xmas_boss_hero_bit; + goto L_close; + +L_close: + @xmas_state = 0; + @xmas_karma = 0; + @xmas_hard_mode = 0; + @xmas_time_key_smonth = 0; + @xmas_time_key_emonth = 0; + @xmas_time_key_rsday = 0; + @xmas_time_key_reday = 0; + @xmas_time_key_year = 0; + close2; + return; +} + +020-1,86,76,0 script XmasDebug#1 NPC105,{ + callfunc "XmasDebug"; + goto L_End; + +OnInit: + if(!(debug)) + disablenpc "XmasDebug#1"; + goto L_End; + +L_End: + end; +} + +030-2,193,62,0 script XmasDebug#2 NPC105,{ + callfunc "XmasDebug"; + goto L_End; + +OnInit: + if(!(debug)) + disablenpc "XmasDebug#2"; + goto L_End; + +L_End: + end; +} + +030-3,26,26,0 script XmasDebug#3 NPC105,{ + callfunc "XmasDebug"; + goto L_End; + +OnInit: + if(!(debug)) + disablenpc "XmasDebug#3"; + goto L_End; + +L_End: + end; +} + +030-4,30,30,0 script XmasDebug#4 NPC111,{ + callfunc "XmasDebug"; + goto L_End; + +OnInit: + if(!(debug)) + disablenpc "XmasDebug#4"; + goto L_End; + +L_End: + end; +} diff --git a/npc/annuals/xmas/helpers.txt b/npc/annuals/xmas/helpers.txt new file mode 100755 index 00000000..28d5e650 --- /dev/null +++ b/npc/annuals/xmas/helpers.txt @@ -0,0 +1,44 @@ + +function script XmasHelperPoints { + @xmas_helper_count = 0; + @xmas_helper_loop = 0; + if((@xmas_helper_done_state) || !(@xmas_helper_start_state)) + goto L_Return; + goto L_Loop; + +L_Loop: + if(XMASTIME & $@xmas_helper_list[@xmas_helper_loop]) + goto L_AddOne; + goto L_LoopAgain; + +L_AddOne: + @xmas_helper_count = (@xmas_helper_count + 1); + goto L_LoopAgain; + +L_LoopAgain: + if((@xmas_helper_loop + 1) == getarraysize($@xmas_helper_list)) + goto L_HelperTally; + @xmas_helper_loop = (@xmas_helper_loop + 1); + goto L_Loop; + +L_HelperTally: + if(@xmas_helper_count == $@xmas_perfect_helpers_count) + goto L_PerfectHelpers; + if(@xmas_helper_count > $@xmas_required_helpers_count) + goto L_SetHelperState; + goto L_Return; + +L_PerfectHelpers: + XMASTIME = XMASTIME | $@xmas_all_helpers_bit; + goto L_SetHelperState; + +L_SetHelperState: + @xmas_state = $@xmas_helpers_done_state; + callfunc "XmasSetState"; + goto L_Return; + +L_Return: + @xmas_helper_count = 0; + @xmas_helper_loop = 0; + return; +} diff --git a/npc/annuals/xmas/list.txt b/npc/annuals/xmas/list.txt new file mode 100755 index 00000000..6f902e04 --- /dev/null +++ b/npc/annuals/xmas/list.txt @@ -0,0 +1,98 @@ + +function script XmasCheckList { + @xmas_list_count = 0; + @xmas_list_loop = 0; + + if((@xmas_list_deliver) || !(@xmas_list_gather)) + goto L_Return; + goto L_Loop; + +L_Loop: + if(XMASTIME & $@xmas_child_list[@xmas_list_loop]) + goto L_AddOne; + goto L_LoopAgain; + +L_AddOne: + @xmas_list_count = (@xmas_list_count + 1); + goto L_LoopAgain; + +L_LoopAgain: + if((@xmas_list_loop + 1) == getarraysize($@xmas_child_list)) + goto L_ListTally; + @xmas_list_loop = (@xmas_list_loop + 1); + goto L_Loop; + +L_ListTally: + if(@xmas_list_count == $@xmas_perfect_list_count) + goto L_PerfectList; + if(@xmas_list_count > $@xmas_required_list_count) + goto L_SetListState; + goto L_Return; + +L_PerfectList: + XMASTIME = XMASTIME | $@xmas_all_lists_bit; + goto L_SetListState; + +L_SetListState: + @xmas_state = $@xmas_list_complete_state; + callfunc "XmasSetState"; + goto L_Return; + +L_Return: + @xmas_list_loop = 0; + return; +} + +function script XmasList { + callfunc "XmasStates"; + + if(($@xmas_time) && (@xmas_list_gather) && !(@xmas_list_complete)) + goto L_QuestTime; + goto L_Return; + +L_QuestTime: + if(XMASTIME & $@xmas_child_list[@child_number]) + goto L_Return; + goto L_GetList; + +L_GetList: + menu + "Hey, I have come to collect your wish list for Santa", L_List, + "Oh sorry, what were you going to say?", L_Return; + +L_List: + mes "[" + $@xmas_child_list_name$[@child_number] + "]"; + mes "Here is my list. Make sure it gets delivered, please!"; + next; + mes "You store " + $@xmas_child_list_name$[@child_number] + "'s wish list carefully in a hidden pocket of your backpack."; + XMASTIME = XMASTIME | $@xmas_child_list[@child_number]; + callfunc "XmasXpReward"; + menu + "I really should be going.", L_Return; + +L_Return: + return; +} + +function script XmasListList { + @xmas_list_loop = 0; + @xmas_child_loop = 0; + goto L_Loop; + +L_Loop: + @xmas_child_loop = ($@xmas_child_list[@xmas_list_loop]); + if ((XMASTIME & @xmas_child_loop) != 0) goto L_LoopAgain; + mes "\"" + $@xmas_child_list_name$[@xmas_list_loop] + "\""; + next; + goto L_LoopAgain; + +L_LoopAgain: + if((@xmas_list_loop + 1) == getarraysize($@xmas_child_list_name$)) + goto L_Return; + @xmas_list_loop = (@xmas_list_loop + 1); + goto L_Loop; + +L_Return: + @xmas_list_loop = 0; + return; +} diff --git a/npc/annuals/xmas/mobmanager.txt b/npc/annuals/xmas/mobmanager.txt new file mode 100755 index 00000000..e478e6be --- /dev/null +++ b/npc/annuals/xmas/mobmanager.txt @@ -0,0 +1,77 @@ + +019-1,0,0,0 script XmasSpawnManager NPC400,{ + end; + +OnCommandSpawnStart: + if ($@xmas_spawn_started) + goto L_End; + $@xmas_spawn_started = 1; + goto L_InitSpawn; + +L_InitSpawn: + initnpctimer; + $@xmas_current_count = 0; + $@xmas_map_loop = 0; + goto L_StartLoop; + +L_StartLoop: + $@xmas_mob_lck = 1; + $@mob_count = mobcount($@xmas_map_spawns$[$@xmas_map_loop], "XmasSpawnCounter#" + $@xmas_map_loop + "::OnTally"); + $@spawn_amount = ($@xmas_mob_counts[$@xmas_map_loop] - ($@mob_count + 1)); + if ($@spawn_amount) + goto L_Spawn; + goto L_NextMap; + +L_Spawn: + areamonster $@xmas_map_spawns$[$@xmas_map_loop], $@xmas_spawn_x1, $@xmas_spawn_y1, $@xmas_spawn_x2, $@xmas_spawn_y2, $@xmas_mob_names$[$@xmas_map_loop], $@xmas_mob_spawns[$@xmas_map_loop], $@spawn_amount, "XmasSpawnCounter#" + $@xmas_map_loop + "::OnTally"; + $@xmas_current_count = ($@xmas_current_count + $@spawn_amount); + goto L_NextMap; + +L_NextMap: + if (($@xmas_map_loop + 1) == getarraysize($@xmas_map_spawns$)) + goto L_End; + $@xmas_map_loop = ($@xmas_map_loop + 1); + goto L_StartLoop; + +OnCommandTally: + $@xmas_map_loop = 0; + $@xmas_current_count = ($@xmas_current_count - 1); + if (($@xmas_current_count < $@xmas_respawn_count) && !($@xmas_mob_lck)) + goto L_StartLoop; + goto L_End; + +OnTimer110000: + initnpctimer; + goto L_StartLoop; + +L_End: + $@mob_count = 0; + $@spawn_amount = 0; + $@xmas_mob_lck = 0; + $@xmas_map_loop = 0; + end; +} + +019-1,0,0,0 script XmasSpawnCounter#0 NPC400,{ + end; + +OnTally: + donpcevent "XmasSpawnManager::OnCommandTally"; + end; +} + +019-3,0,0,0 script XmasSpawnCounter#1 NPC400,{ + end; + +OnTally: + donpcevent "XmasSpawnManager::OnCommandTally"; + end; +} + +030-3,0,0,0 script XmasSpawnCounter#2 NPC400,{ + end; + +OnTally: + donpcevent "XmasSpawnManager::OnCommandTally"; + end; +} diff --git a/npc/annuals/xmas/reagents.txt b/npc/annuals/xmas/reagents.txt new file mode 100755 index 00000000..dbdf52e7 --- /dev/null +++ b/npc/annuals/xmas/reagents.txt @@ -0,0 +1,139 @@ + +function script CheckReagents { + @xmas_reagent_loop = 0; + if((@xmas_reagent_done_state) || !(@xmas_reagent_start_state)) + goto L_Return; + if(@xmas_side) + goto L_OneLoop; + goto L_ZeroLoop; + +L_ZeroLoop: + if(countitem($@xmas_zero_reagents$[@xmas_reagent_loop]) >= $@xmas_zero_reagents_amounts[@xmas_reagent_loop]) + goto L_ZeroLoopAgain; + goto L_Return; + +L_ZeroLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$)) + goto L_AllReagents; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_ZeroLoop; + +L_OneLoop: + if(countitem($@xmas_one_reagents$[@xmas_reagent_loop]) >= $@xmas_one_reagents_amounts[@xmas_reagent_loop]) + goto L_OneLoopAgain; + goto L_Return; + +L_OneLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$)) + goto L_AllReagents; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_OneLoop; + +L_AllReagents: + @xmas_state = $@xmas_reagents_done; + callfunc "XmasSetState"; + goto L_Return; + +L_Return: + return; +} + +function script DeleteReagents { + @xmas_reagent_loop = 0; + if(@xmas_side) + goto L_OneLoop; + goto L_ZeroLoop; + +L_ZeroLoop: + delitem $@xmas_zero_reagents$[@xmas_reagent_loop], $@xmas_zero_reagents_amounts[@xmas_reagent_loop]; + goto L_ZeroLoopAgain; + +L_ZeroLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$)) + goto L_Return; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_ZeroLoop; + +L_OneLoop: + delitem $@xmas_one_reagents$[@xmas_reagent_loop], $@xmas_one_reagents_amounts[@xmas_reagent_loop]; + goto L_OneLoopAgain; + +L_OneLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$)) + goto L_Return; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_OneLoop; + +L_Return: + return; +} + +function script ListReagents { + @xmas_reagent_loop = 0; + mes "\"I'm going to need \""; + next; + + if(@xmas_side) + goto L_OneLoop; + goto L_ZeroLoop; + +L_ZeroLoop: + mes "\"" + $@xmas_zero_reagents_amounts[@xmas_reagent_loop] + " " + $@xmas_zero_reagents_names$[@xmas_reagent_loop] + "\""; + next; + goto L_ZeroLoopAgain; + +L_ZeroLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$)) + goto L_AllReagents; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_ZeroLoop; + +L_OneLoop: + mes "\"" + $@xmas_one_reagents_amounts[@xmas_reagent_loop] + " " + $@xmas_one_reagents_names$[@xmas_reagent_loop] + "\""; + next; + goto L_OneLoopAgain; + +L_OneLoopAgain: + if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$)) + goto L_AllReagents; + @xmas_reagent_loop = (@xmas_reagent_loop + 1); + goto L_OneLoop; + +L_AllReagents: + return; +} + +function script BadPowderMake { + if(countitem("PileOfAsh") < ($@xmas_red_amount + $@xmas_yellow_amount)) + goto L_NotEnough; + if(countitem("RedDye") < $@xmas_red_amount) + goto L_NotEnough; + if(countitem("YellowDye") < $@xmas_yellow_amount) + goto L_NotEnough; + getinventorylist; + if (@inventorylist_count > 100) + goto L_FullInv; + goto L_MakePowder; + +L_MakePowder: + delitem "PileOfAsh", ($@xmas_red_amount + $@xmas_yellow_amount); + delitem "RedDye", $@xmas_red_amount; + delitem "YellowDye", $@xmas_yellow_amount; + getitem "RedPowder", $@xmas_red_amount; + getitem "YellowPowder", $@xmas_yellow_amount; + mes "\"Here is your powder, now move!\""; + goto L_Return; + +L_FullInv: + mes "\"... Excuse me but where did you expect you were going to hold these powders...\""; + mes "\"WAIT! no, I don't want to know. Just come back when you have some room.\""; + goto L_Return; + +L_NotEnough: + mes "\"You don't have enough of eagents to make the powders.\""; + mes "\"To replace the glitter we will need get " + ($@xmas_red_amount + $@xmas_yellow_amount) + " Piles of Ash, " + $@xmas_red_amount + " Red Dyes and " + $@xmas_yellow_amount + " Yellow Dyes\""; + goto L_Return; + +L_Return: + return; +} diff --git a/npc/annuals/xmas/states.txt b/npc/annuals/xmas/states.txt new file mode 100755 index 00000000..c21ccce5 --- /dev/null +++ b/npc/annuals/xmas/states.txt @@ -0,0 +1,51 @@ + +function script XmasStates { + // Check for Old Quest Line Keys. Reset Quest if so. + callfunc "XmasCheckOld"; + // Main Quest + @xmas_state = ((XMASTIME & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); + @xmas_karma = ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT); + @xmas_side = XMASTIME & $@xmas_side_bit; + + @xmas_list_gather = (@xmas_state >= $@xmas_list_path2_state); + @xmas_list_path2 = (@xmas_state == $@xmas_list_path2_state); + @xmas_list_path1 = (@xmas_state == $@xmas_list_path1_state); + @xmas_list_both = (@xmas_state == $@xmas_list_both_state); + @xmas_list_complete = (@xmas_state >= $@xmas_list_complete_state); + @xmas_list_deliver = (@xmas_state >= $@xmas_list_deliver_state); + @xmas_helper_start_state = (@xmas_state >= $@xmas_helpers_start_state); + @xmas_helper_done_state = (@xmas_state >= $@xmas_helpers_done_state); + @xmas_reagent_start_state = (@xmas_state >= $@xmas_reagents_start); + @xmas_reagent_done_state = (@xmas_state >= $@xmas_reagents_done); + @xmas_boss_door_state = (@xmas_state >= $@xmas_boss_door_open_state); + @xmas_reward_start_state = (@xmas_state == $@xmas_reward_start); + @xmas_reward1_done_state = (@xmas_state == $@xmas_reward1_done); + @xmas_reward2_done_state = (@xmas_state == $@xmas_reward2_done); + @xmas_reward_done_state = (@xmas_state == $@xmas_reward_done); + + // Basement Passage + @xmas_basement_passage = XMASTIME & $@xmas_basement_passage; + // Thrown Out + @xmas_thrown_out = XMASTIME & $@xmas_thrown_out_bit; + // Learned Route to Orum + @xmas_knows_route = XMASTIME & $@xmas_route_bit; + // Santas Helper + @xmas_sh_done = XMASTIME & $@xmas_sh_bit; + // List Quest + @xmas_all_lists = XMASTIME & $@xmas_all_lists_bit; + // Helper Quest + @xmas_helper_bit = XMASTIME & $@xmas_helper_bit; + @xmas_all_helpers = XMASTIME & $@xmas_all_helpers_bit; + // Acorns + @xmas_helper_acorn = XMASTIME & $@xmas_helper_bit_acorns; + // Bedding + @xmas_helper_bedding = XMASTIME & $@xmas_helper_bit_bed_starts; + // Glitter + @xmas_helper_glitter = XMASTIME & $@xmas_helper_bit_glitter_starts; + // Storage + @xmas_helper_storage = XMASTIME & $@xmas_helper_bit_storage; + // Bosses + @xmas_boss_start = XMASTIME & $@xmas_boss_start_bit; + @xmas_boss_hero = XMASTIME & $@xmas_boss_hero_bit; + return; +} |