Back to top

The Phantom Update

Posted on 2024-10-24 in Update

image

Boo!

I hope that during my pretty long absence, your hearts were not filled with fear.

However, the world of Yogurting... well, that's a different story!

In Yogurting's world where EVP does not give up things got even more scary. Just in time for Halloween, the EVP has intensified, bringing even more eerie and mysterious happenings. Expect chills, thrills, and strange encounters as we dive deeper into the haunting. Watch out for tricks (and treats)!

Quests

You heard right, the quests are back!

Now NPCs can give you quests to get items they need, with great rewards awaiting for you by bringing them! Start a quest by talking to NPCs, jump to a relevant one, then return to the quest giver for your reward after clearing it.

image

Star shop

This update brings Star shop back allowing players to buy Star Items - originally available for a currency tied to real-world money.

image

Random boxes

Random Boxes are back for the first time in 13 years!

Once opened, you will receive one of several items determined by the GM. Freedom and many possible combinations of item draws have been opened to server administrators.

image

For server operators

Since the documentation is out of date, I leave here the details how to use new things. The docs will be updated with this and other information soon.

Quests

It is possible to add 9 quests, here are their IDs:

1012, 1016, 1024, 1048, 2001, 2002, 2021, 2027, 2028

These IDs must be present in NPC dialogs in XML.

Here's an example Page NPC with Wizard of Oz copy book quest included:

<?xml version="1.0" encoding="UTF-8"?>

<field>

    <npc id="1" shell="1" x="33" y="111" dir="4" init="init" >

        <script name="init">

            <jump label="page_estiva_hello"/>

        </script>

        <dialog name="page_estiva_hello" cutin="0" closebutton="0">
            <text><![CDATA[
Hello <font color="00FFBD">${local.name}</font>.<br>
What books do you want to read today?
            ]]></text>
            <selection next="page_quest" text="Display new quests" />
            <selection next="page_quest_report" text="Report quest completion" />
        </dialog>

        <questlist name="page_quest" cutin="0" closebutton="0">
            <text><![CDATA[
Please select a quest.
            ]]></text>
            <selection questid="1016" next="page_quest_wooz" text="Wizard of Oz"/>
        </questlist>

        <questinfo name="page_quest_wooz" cutin="0" closebutton="0">
            <text><![CDATA[
It has come to my attention that a copy of<br>
the Wizard of Oz book was stolen and damaged.<br>
I ask you to retrieve it after which I'll repair it.
            ]]></text>
            <selection startquest="true" next="page_quest_wooz_take" text="Yes, I'll bring it!"/>
            <selection startquest="false" next="page_quest" text="No. I don't want to do it."/>
        </questinfo>


        <questreport name="page_quest_report" cutin="0" closebutton="0" noquest="page_quest_miss">
            <text><![CDATA[
What quest would you like to report?
            ]]></text>
            <selection questid="1016" text="Wizard of Oz!" success="page_quest_wooz_complete" fail="page_quest_wooz_fail"/>
        </questreport>


        <dialog name="page_quest_wooz_take" cutin="0" closebutton="0">
            <text><![CDATA[
Thank you. I hope you get back to me with the book<br>
in the best condition possible.
            ]]></text>
            <selection text="OK!"/>
        </dialog>

        <dialog name="page_quest_miss" cutin="0" closebutton="0">
            <text><![CDATA[
Ummm... Excuse me? I didn't ask you to do anything.
            ]]></text>
            <selection text="Sorry!" />
        </dialog>

        <dialog name="page_quest_wooz_complete" cutin="0" closebutton="0">
            <text><![CDATA[
You did a good job. Now i'm off to repair the book.<br>
Here is your reward.
            ]]></text>
            <selection text="Thanks!" />
        </dialog>

        <dialog name="page_quest_wooz_fail" cutin="0" closebutton="0">
            <text><![CDATA[
You didn't bring all the items I wanted.
            ]]></text>
            <selection text="I will be back with them soon." />
        </dialog>

    </npc>
</field>

Random boxes

This update adds RandomBox.yml file to the "db" folder. That file defines the content of Random boxes and the sample content is already set by default.

The first number represents a CoItem ID of a box. Each Random Box's item code starts with "etc_rb", so refer to CoItemType.txt in order to find appropriate IDs. Add more Random boxes inside that file according to your needs.

OMT

That update also brings a new version of Octet Migration Tool (OMT) adapted to new player variable storing. You can get it here.

Changelog

[Episode]

  • Added "Phantom of the Opera" (ID: 56) and "Halloween trick" (ID: 47) episodes. Make sure to add them to an Episode Gate(s).

[Quests]

  • Reimplemented the quest feature. It's possible to start, complete and cancel a Quest. Quest items drop inside episodes if a player has an active quest related to the episode.

Available quests are:

  • Halloween Candy,
  • Pumpkin Head Hunt,
  • Delivery,
  • Wizard of Oz copy book,
  • Catch Soso,
  • Souchong's request,
  • Suspicious Mao,
  • Eliminate Soso
  • Zero-Sevens invasion.

[Items]

  • Added Quest items.
  • Added Star BeItem support.

[Random Boxes]

  • Added Random Boxes. Opening a one will grant a player one of the items described in RandomBox.yml. If it's not defined in the file, the player wil get a milk placeholder.

[Commands]

  • Added /qeitem command to obtain Quest items.
  • Added "rld" alias to Reload command.
  • Added /tp command that teleports issuer to a player. Aliases are "chase", "teleport". Usage: /tp (Player).

[XML Score]

  • Added "onlevelup" arbitrary library function. Called automatically by server when player reaches a new level.

[Misc]

  • Reimplemented score variable storing. Old databases are not compatible.
  • Fixed issue with locker coitems missing when two pieces of the same item gets placed to separate lockers.
  • Fixed /level command incorrectly sending max xp amount after using.
  • Fixed regeneration rate not updating properly after level change.
  • Other minor fixes

Last thoughts

I apologize for the significant delay of the summer update. To be honest, I feel like even this update doesn’t quite make up for the long wait. I’ll do my best to speed up development going forward, but as you’ve likely noticed by now, my timing can be rather unpredictable.

For now, enjoy the new Halloween-themed additions and more — don’t let the bugs you might encounter spook you too much. Happy Halloween! 🎃