Skip to content

Implemented 7 New Christmas Randoms

What has been done in this MR?

  • Implemented 7 Christmas Holiday randoms:
    • Snowman: A snowman visiting from the Land of Snow is melting and ask the player for a snowball. If the player has a snowball in their inventory they will give it to the snowman and will be taught the snowman dance if they have not unlocked or will receive a genie xp lamp if they already know the dance.
    • Snowman Fight: 2 snowmen appear(A barbarian snowman and another random type) and start fighting and disappear after one of them dies, the player walks far enough away, or 3 minutes passes.
    • Santa : Santa appears and the player can talk to him to see if they are on the nice or naughty list (1 in 3 chance they are naughty). If they are nice they get a gift from Santa which is a roll from the Giftmas box loot table. If they are naughty they get 1-20 noted coal.
    • Jack Frost: Jack Frost appears and attempts to stay 2-3 tiles away from the player and throw snowballs at them for about 1 minute.
    • Choir: A the Zanaris choir appears and since a few lines of a Christmas carol(4 possible carols) to the player before leaving.
    • Snowstorm: 5 snow npc spawn and wander around the player. A random Christmas song and wind sounds plays for all nearby players near the storm.
    • Cook: The prior cook of Lumbridge appears and is giving out cakes for holidays. The player will randomly receive a regular, chocolate, or mint cake.
  • Additional Changes:
    • Added FORCE_CHRISTMAS_RANDOMS server config and associated server constant / server config parser
    • Removed a unused loottable var from HolidHolidayRandomEventNPC and inherited subclasses
    • Added a talkTo abstract function to HolidayRandomEventNPC to allow talking to holidayrandoms and added the function to inherited subclasses
    • Modified NPCTalkListener.kt to properly handle the talk to function for HolidayRandomEventNPC. This was implemented in way that would not affect the normal talk to interactions for npcs used for holiday randoms.
    • Modified sendChat contentAPI function to accept a delay in ticks which queues a softscript when a delay is defined.
    • Fixed a audio issue in CombatPulse.java, CombatSwingHandler.kt, and DeathTask.java where npc attack, defence, and death audio would not play if 2 npc are fighting each other. The combat audio for npcs would only play if the killer/attacking entity was a player. This check has been removed so 2 npcs fighting can be heard.
    • Added missing animations, sounds, stats to snowman(id: 6742-6745

What should testers check?

  • ::hrevent -p username -e snowman
  • ::hrevent -p username -e snowman_fight
  • ::hrevent -p username -e santa
  • ::hrevent -p username -e jack_frost
  • ::hrevent -p username -e choir
  • ::hrevent -p username -e snowstorm
  • ::hrevent -p username -e cook
  • Verify all event npcs automatically terminate when you get far away from them
  • Verify other players can not talk to the main event npc if it is not their event
  • Verify you can hear the combat sounds of 2 npcs fighting (Verify this with the snowman_fight event)
  • I have tested these changes thoroughly.
  • I used the relevant Thanos/Zaros tool for any JSON edits where possible, and have attached screenshots of any changes.

Merge request reports