recursal/Fanatic-Fandom huggingface dataset:
Artificial Intelligence

Artificial Intelligence(AI) essentially, is the process by which an computer system solves a problem or completes a task in a manner that mimics, to some degree, human learning and decision making.

## History

Though the field of artificial intelligence has only been around for about 60 years, since the term was coined, there have been numerous landmarks in its history. After the field’s inception, the first major breakthrough came in the form of the logical theorist program created by Herbert Simon and Allen Newell in 1956. The program was designed to solve problems and was put to work on the Principia Mathematica of which it would prove 38 theorems. They soon followed this up with the general problem solver in 1957, which was capable of solving any problem so long as it was expressed as a well formed formula. One year later John McCarthy created a programming language called LISP while at MIT. The programming language was heavily influenced by Alonzo Church’s lambda calculus. LISP is currently one of the oldest high level languages still in use today, with its two major variants being Common Lisp and Scheme.

One of the first AI's to play games was a checkers program written by Arthur Samuel in the 1959. The next major landmark in AI was the chess playing program, Deep Blue, developed by IBM. On may 11th, 1997 Deep Blue became the first computer to defeat a world champion, beating Garry Kasparov, the chess Grandmaster in a six game match.

## Today

Today the term *artificial intelligence* has become somewhat of a blanket term. When people talk about AI they are usually referring to software that is capable of making some kind of decision. This is often anything from the personal assistant software common on phones today to the program that plays you in online chess.

Some of the most common examples of artificial intelligence in the mainstream come in the form of user predictive search engines such as Google, Yahoo, and Bing . These types of search engines use algorithms to process a user's data to find with it "thinks" is most likely the kind of content you are looking to see. AI is also the general term that is given to the assistants that are frequently integrated into smart devices. These include google assistant on the android platform, Siri on iOS, Alexa on Amazon connected devices and Cortana on Windows computers.

## References

1. ↑ https://history-computer.com/ModernComputer/Software/LogicTheorist.html
2. ↑ https://common-lisp.net/
3. ↑ http://www.schemers.org/
4. ↑ http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/deepblue/
Group11hci325 Wiki

## The Personalized Internet

The purpose of this wiki is to provide information about searches under the conventions of the Semantic Web (Web 3.0). This information is relevant and important to the majority of the population given that everyday life is increasingly centered around technology, smartphones and the internet. Understanding the information provided in this Wiki will benefit those who use internet services on a regular basis. Topics covered will be broken down into three interrelated categories, which will include personalized searches, the concept of the “Filter Bubble”, and user data tracking that is inherently necessary to creating and delivering a personalized web experience, tailored to each specific individual.

- Adchoices
 Browsing Habits
- Interests
 Search Algorithms- Indexing
 Search Engine Optimization
 Search Engines- Google
- Yahoo
 User Accounts
 Web 3.0
- Artificial Intelligence
- The Semantic Web
Imperial Planetary Dominion of Orion

The Imperial Planetary Dominion of Orion (IPDO) is a highly advanced Xenophobic faction located in the outer reaches of the Andromeda Galaxy.

IPDO's government and society are based around the idea of "Sancti Imperatoris" The Holy Emperor. The Emperor is the head of IPDO's state religion The Children of Orion. The Emperor is elected by the the high council of IPDO. The holy planet of Orion is the seat of the IPDO high council, and the holiest planet among IPDO's vast empire.

From an early age IPDO children are indoctrinated into the state religion and are extremely devout, sometimes throwing away their own lives for the Imperium. When the Imperium conquers a human world they simply integrate the system into the empire as is. When the Imperium conquers a non-human world, they initiate a total genocide of non-humans on the planet using chemical weapons, this keep the planets infrastructure and resources intact for later Imperial conquest.
Scriptable Object EventSystem

```
// ScriptableObject Event System
// Each ScriptableObject acts as an event stream
// Provides a button when inspecting the SO to "raise" the event
// The SO can be placed in UnityEvent callbacks to easily "raise" them by calling the "raise" function
// Also included is a EventListening component for applying event responses
// if not plugging into an external system

////////////////
// Interfaces.cs
using System;
using System.Collections.Generic;

public interface IEventListener<T> {
    void OnEventRaised(T payload);
}

public interface IEvent<T> {
    List<IEventListener<T>> EventListeners { get; }
    void Raise(T payload);
}

/////////////////
// StringEvent.cs
using System;
using UnityEngine;
using Sirenix.OdinInspector;

[CreateAssetMenu(menuName = "Events/GameEvent<String>")]
public class StringEvent : GenericEvent<string> {
    [DisableInEditorMode]
    public string payload;

    [Button, DisableInEditorMode]
    public void Raise()
    {
           Raise(payload);
    }
   }

   //////////////////
   // GenericEvent.cs
   using System;
   using System.Collections.Generic;
   using UnityEngine;
   using Sirenix.OdinInspector;

   public abstract class GenericEvent<T> : ScriptableObject, IEvent<T>
{
    [SerializeField]
    List<IEventListener<T>> _eventListeners = new List<IEventListener<T>>();

    [ShowInInspector]
    public List<IEventListener<T>> EventListeners
    {
           get { return _eventListeners; }
    }

       public bool DebugLog = false;

    public void Raise(T payload)
    {

           if (DebugLog)
        {
               Debug.LogFormat("Begin Event Raise for {0}", this);
        }
           for (int i = EventListeners.Count - 1; i >= 0; i--)
        {
               if (DebugLog)
            {
                   Debug.LogFormat("\tCalling {0}", EventListeners[i]);
            }
               EventListeners[i].OnEventRaised(payload);
        }
       }

       public override string ToString()
    {
           return string.Format("Event_{0}<{1}>", name, typeof(T));
    }
   }

   //////////////////////////
   // GenericEventListener.cs
   using System;
   using UnityEngine;
   using Sirenix.OdinInspector;

   public abstract class GenericEventListener<T, U> : MonoBehaviour, IEventListener<U> where T : IEvent<U>
   {
       [ShowInInspector]
    public T Event;

    private void OnEnable()
    {
           if (!Event.EventListeners.Contains(this))
            Event.EventListeners.Add(this);
    }

       private void OnDisable()
    {
           if (Event.EventListeners.Contains(this))
            Event.EventListeners.Remove(this);
    }

       public virtual void OnEventRaised(U payload) {}

    public override String ToString()
    {
           return String.Format("Listener_{0}<{1}>", gameObject.name, typeof(T));
    }
   }

   ///////////////////////
   // EchoEventListener.cs
   using System;
   using UnityEngine;

   public class EchoEventListener : GenericEventListener<StringEvent, string>
{
    public override void OnEventRaised(string payload)
    {
           Debug.Log(payload);
    }
   }

```
Data Tracking

Data tracking is a technique used to better shape website content to a user. It employs cookies to build a digital profile on a specific user. This allows a website to have a more personal relationship with a specific user and the ability to tailor a website to that user. It also allows websites to get ads that are more suited to particular users.

## Data Brokers

Some companies specifically work in data tracking and earn the name data brokers. They specialize in building massive portfolios for anyone that uses the web and sell this information to companies looking for information on a particular person. Companies like this have been around a long time using public records to gather information on people but the internet has allowed these companies to develop more detailed and personal portfolios then before. Tracking users shopping habits, who users connect with on social media, and what ads users click, and what users search are just a few examples these companies use to form portfolios. This data is then refined into finding out what a users preferences may be and the portfolio is built.

## Cookies

HTTP Cookies are small pieces of custom information about the user that a web browser stores while a User is surfing the web. The web browser (Google, Bing, Yahoo!, etc.) stores this information to make their engine seem more personalized and comfortable to search in. These small bits of information can be anything from a site remembering your name, what you had in your shopping cart, or your credit card number. However, some sites get more greedy, often using your information to put personalized ads on the sides of your visited websites. These personalized ads are created based on algorithms which decide what you would most likely want to purchase.

1. ↑ https://www.npr.org/sections/alltechconsidered/2016/07/11/485571291/firms-are-buying-sharing-your-online-info-what-can-you-do-about-it
2. ↑ https://en.wikipedia.org/wiki/HTTP\_cookie#Zombie\_cookie
Adchoices

Adchoices is a progam operated by Google that uses interest-based advertising to help target the consumer. Interest based advertising is when the user is served advertisements for a product relevant to search terms the user recently looked up, jand recent activity tracked in data collective accounts. Adchoices exists in the United States, Canada and throughout Europe.

## History

The Federal Trade Commission began to consider advertisting platforms on the internet that collect consumer data in 2009. They did this becouse they needed a way of regulating and protecting the consumer's rights and privacy. The goal of the program was to show the user what advertising companies are following the users data.

## References

1. https://en.wikipedia.org/wiki/AdChoices

2. http://youradchoices.com/learn
The Semantic Web

The semantic web is an extension of the current web, in contrast, it allows users to efficiently interact with amongst one another. With correlation to the Web 3.0, semantic web concerns itself with the understanding of data through new ways to share within users.

## The "P" Axis

The "P" Axis is the notion of computers cooperating with people. The idea that the tower, as seen above, is perceived in away where more semantic technologies, such as Artificial Intelligence can be encoded. P Axis, also considered "The People Axis", due to both perception and people starting to with "P", connects both the technological and people world.

## Standards

Although the Semantic Web uses similar technology as original web implementations, it has three main concepts which different it. With the use of RDF (Resource Description Framework), where all information of the web is stored, SPARQL (SPARQL Protocol and RDF Query Language), used to query data, and OWL (Web Ontology Language) the Semantic Web, which focuses on defining concepts composably.

## References

1. ↑ https://www.w3.org/RDF/Metalog/docs/sw-easy
2. ↑ https://www.cambridgesemantics.com/blog/semantic-university/intro-semantic-web/
3. ↑ https://www.w3.org/RDF/Metalog/docs/sw-easy
4. ↑ https://www.cambridgesemantics.com/blog/semantic-university/intro-semantic-web/
Months of the Year Set Month 8

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug||true
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec
</tabview>
Months of the Year Set Month 4

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr||true
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec
</tabview>
Months of the Year Set Month 12

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec||true
</tabview>
Filter Bubble

"Filter Bubble" is the term given to describe the result of personalization of the internet that occurs with Web 3.0 operations. Searches conducted will retrieve results that Artificial Intelligence, based upon the data collected in Data Collective Accounts about browsing habits and interests of a user. The results of searches included and omitted is the user is receiving different results than most other people; that user is partially isolated in a bubble, based on the filters applied by the Artificial intelligence.
Cyrilla Boroshiv Series

The Cyrilla Boroshiv (CB) series was a series of heavy tanks that played a pivotal role in the early stages of the Second Hakarian War of Independence. The British Planetary Defence Force, who haven’t seen a tank larger than a Panzer 4 in more than 500 years, were absolutely terrified by the CB series and quickly retreated at their sight. later in the war, they grew progressively larger in size, armour thickness, and gun caliber, eventually culminating with a 300mm tank destroyer.
Months of the Year

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb||true
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec
</tabview>
The End

*&World 3-Boss 2: The End&Enter a short description.&Author name&Freeze a fish !&9,0,0,320,240,0,0,3,320,240,0,0,2,1,99,0,0,2,0,&0,150,180,1,&,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,127,127,132,126,127,127,127,127,127,132,126,127,127,127,132,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&*
Super Mario Flash 2 Demo

January

Web Theme of the Month: Cryogenic Final

Play Now!

Play All 12 Themes in the FULL version!

Cryogenic Final, Windows, Green, Blue, Classic, Jungle, Neo, Desert, Golden, Chaos, Chocolate, and Cryogenic

In the Full version of Super Mario Flash 2, you can play ANY theme, ANY time! It's BETTER than this demo! Click here to get the full version.
Rotación

El periodo de rotación de Plutón es igual a 6,39 días terrestres.67​ Al igual que Urano, Plutón gira acostado sobre un lado en su plano orbital, con una inclinación axial de 120°. Por lo tanto, la variación estacional es extrema. Durante los solsticios plutonianos, en una cuarta parte de la superficie es continuamente de día mientras que en otra cuarta parte es noche continua.68​

Plutón recibe una cantidad de luz solar análoga a la que recibe la Tierra por las tardes. La NASA tiene publicado un calculador del tiempo plutoniano que determina cuando la luz en la Tierra es equivalente a la de Plutón en un día claro.69​

Vuelta a la página principal
Browsing Habits

Browsing habits can be defined as the paths, patterns, and actions that a user takes while using the Internet. This includes searches on Google, behaviors on Facebook, and any other activity online.

The purpose of monitoring users' browsing habits is to try to gather data on their interests, with the purpose of serving advertisements, as well as following the user's path through a website, again with the purpose of advertisement placement. The tracking of habits is usually done through Data Collective Accounts. Search algorithms can be customized while monitoring a Users Browsing Habits, these help personalize a Users Experience on the web. Search Engines have evolved to use personalized Machine Learning Algorithms with Artificial Intelligence in order to create Web Browsers which are accustomed to a Users Browsing Habits.
Super Mario Revamped 3 Ending 2

*&World 3-Ending 2&Enter a short description.&Author name&Congratulations! The journey has finally come to an end of the ball. The end of gates, power ups, and the uneasy world of turmoil it encountered can finally rest. Thanks for playing, and I hoped you enjoyed the Ball Revamped series. These past 375 levels have been amazing to create, and the incredible feedback from all the games has made me so greatful for the flash community. Congratulations once again, and hope you come back and play again.&http://www.htmlcsscolor.com/preview/gallery/000066.png&http://www.htmlcsscolor.com/preview/gallery/000066.png&http://66.90.93.122/ost/ball-revamped-1-5-duo-1-2-ost/tgdpbdqvoz/BR3%20-%20Ending.mp3&11,19,0,320,240,0,0,3,320,240,0,0,2,1,99,1,0,2,0,&0,40,180,1,&,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&*
Bosses

Iggy Koopa

Roy Koopa

Wendy O. Koopa

Ludwig von Koopa

Morton Koopa Jr.

Lemmy Koopa

Larry Koopa

Kamek

Bowser

*&untitled&author&none&&,,,,&GWA HA HA... Mario! Its Bowser. You better be ready because i cant wait to pound you into the ground with my invention! if you want Princess Peach so bad, come over here!&&&18,,,320,240,320,240,,,1,1,,&,23,180&13,10,11,1,&936,453,453,453,453,453,453,453,453,453,453,453,453,453,453,935,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,67,,,57,59,,58,,59,61,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,,,122,136,,,,,,,,,,,,,53,53,122,137,120,120,120,120,120,120,120,120,120,120,120,120,120,120,123&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&Your adventure is over. Mario, The Princess, Yoshi and Pouetpu are going to take a vacation...&&&9,,,320,240,320,240,,,1,1,,&8,153,180&&1090,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,383,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,126,127,127,132,126,127,127,127,127,127,132,126,127,127,127,132&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&*
Months of the Year Set Month 6

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun||true
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec
</tabview>
Triangula

*&World 3-Boss 1: Triangula&Enter a short description.&Author name&Freeze a fish !&8,0,0,320,240,0,0,3,320,240,0,0,2,1,99,0,0,2,0,&0,60,160,1,&,&174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,461,2529,2529,2529,2529,2529,2529,2529,460,174,174,174,174,174,461,2529,175,0,0,0,0,0,0,0,457,2529,460,174,174,174,171,0,0,0,0,0,0,0,0,0,0,0,172,174,174,461,175,0,0,0,0,0,0,0,0,0,0,0,457,460,174,171,0,0,0,0,0,0,0,0,0,0,0,0,0,172,174,171,0,0,0,0,0,0,0,0,0,0,0,0,0,172,174,171,0,0,0,0,0,0,0,0,0,0,382,0,0,172,174,171,0,0,0,0,0,0,0,0,0,0,0,0,0,172,174,459,2528,2528,2528,2528,2528,2528,2528,2528,2528,2528,2528,2528,2528,458,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&*
Months of the Year Set Month 9

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep||true
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov
Months\_of\_the\_Year/December|Dec
</tabview>
Months of the Year Set Month 11

<tabview>
Months\_of\_the\_Year/January|Jan
Months\_of\_the\_Year/February|Feb
Months\_of\_the\_Year/March|Mar
Months\_of\_the\_Year/April|Apr
Months\_of\_the\_Year/May|May
Months\_of\_the\_Year/June|Jun
Months\_of\_the\_Year/July|Jul
Months\_of\_the\_Year/August|Aug
Months\_of\_the\_Year/September|Sep
Months\_of\_the\_Year/October|Oct
Months\_of\_the\_Year/November|Nov||true
Months\_of\_the\_Year/December|Dec
</tabview>
EnumList

```
using System;

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]

public class EnumListLabelAttribute : Attribute

{

    public Type EnumType;

    public float LabelWidth;

    public EnumListLabelAttribute(Type enumType, float labelWidth)

    {

        this.EnumType = enumType;

        this.LabelWidth = labelWidth;

    }

}

```

```
using System;

using UnityEngine;

using System.Collections;

using Sirenix.OdinInspector.Editor;

using Sirenix.Utilities.Editor;

[OdinDrawer]

[DrawerPriority(0, 1000, 0)] // Set a high wrapper priority, so the drawer is part of the wrapping queue

public class EnumListLabelDrawer : OdinAttributeDrawer<EnumListLabelAttribute>

{

    public override bool CanDrawTypeFilter(Type type)

    {

        return !typeof(IList).IsAssignableFrom(type); // Don't draw for the list itself, only the list elements

    }

    protected override void DrawPropertyLayout(InspectorProperty property, EnumListLabelAttribute attribute, GUIContent label)

    {

        // Get label for enum index

        int index = property.Index;

        string indexName = Enum.GetNames(attribute.EnumType)[index];

        // Set label width

        GUIHelper.PushLabelWidth(attribute.LabelWidth);

        {

            // Call next drawer with enum entry

            this.CallNextDrawer(property, new GUIContent(indexName));

        }

        GUIHelper.PopLabelWidth();

    }

}

```

Usage:

```
[EnumListLabel(typeof(Things), 50)]

public GameObject[] m_Things = new GameObject[(int)Things.max];

```
MultiTagSystem

```
// A multi tag system that leverages a component with a TagList
// and an extension method for easily determining if the tag is set

///////////
// Usage.cs
public class Usage : MonoBehaviour
{
    void Start()
    {
        if (gameObject.HasTag(Tag.Player), gameObject.HasTag(Tag.UI))
        {
            Debug.Log("I have the player and the UI tag!")
        }
    }
}

//////////
// Tags.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;

public enum Tag {
    Deafult,
    Player,
    NonPlayer,
    UI,
    Enemy
}

public class Tags : MonoBehaviour {
    [SerializeField, ShowInInspector]
    public Tag[] TagList = new Tag[0];
}

public static class TagsExtensions
{
    public static bool HasTag(this GameObject obj, Tag tagToCheck)
    {
        Tags comp = obj.GetComponent<Tags>();
        if (comp != null)
        {
            for (int i = 0; i < comp.TagList.Length; i++) {
                if(comp.TagList[i] == tagToCheck)
                {
                    return true;
                }
            }
        }
        return false;
    }
}

```
ImageHeader(path)

ImageHeader

```
public class ImageHeaderAttribute : Attribute

{

public string AssetPath { get; private set; }

public ImageHeaderAttribute(string assetPath)

{

this.AssetPath = assetPath;

}

}

[OdinDrawer]

[DrawerPriority(0.2, 0, 0)]

public class ImageHeaderAttributeDrawer : OdinAttributeDrawer<ImageHeaderAttribute>

{

protected override void DrawPropertyLayout(InspectorProperty property, ImageHeaderAttribute attribute, GUIContent label)

{

PropertyContext<Texture> texture;

if (property.Context.Get(this, "texture", out texture))

{

texture.Value = AssetDatabase.LoadAssetAtPath<Texture>(attribute.AssetPath);

}

GUILayout.Label(texture.Value, EditorStyles.centeredGreyMiniLabel);

this.CallNextDrawer(property, label);

}

}

```
Super Mario Revamped 3 Ending 1

*&World 3-Ending 1&Enter a short description.&Author name&Congratulations! You have once again defiled another shape, and have moved closer to the final enemy. Through the deepest waters, highest mountains, and toughest jungle, you struggle on towards the end... ...don't give up... ...the final worlds await...&http://66.90.93.122/ost/ball-revamped-1-5-duo-1-2-ost/issugyxeta/BR3%20%26%204%20-%20Nexues%2C%20Ending.mp3&6,19,0,320,240,0,0,3,320,240,0,0,2,1,99,1,0,2,0,&0,40,180,1,&,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,&0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&*
ScriptableObjectVariable Drawers

```
public class SomeMonoBehaviour : MonoBehaviour

{

public IntReference test1;

public FloatReference test2;

}

```

```
[OdinDrawer]

public class VariableReferenceDrawer<TReference, TVariable, TValue> : OdinValueDrawer<TReference>

where TReference : VariableReference<TValue, TVariable>

where TVariable : ScriptableObjectVariable<TValue>

{

protected override void DrawPropertyLayout(IPropertyValueEntry<TReference> entry, GUIContent label)

{

var value = entry.SmartValue;

GUILayout.BeginVertical();

{

var btnRect = GUIHelper.GetCurrentLayoutRect();

btnRect.width = EditorGUIUtility.labelWidth;

btnRect = btnRect.AlignRight(18);

btnRect.y += 4;

if (GUI.Button(btnRect, GUIContent.none, "PaneOptions"))

{

var menu = new GenericMenu();

menu.AddItem(new GUIContent("Constant"), value.UseConstant, () => value.UseConstant = true);

menu.AddItem(new GUIContent("Variable"), !value.UseConstant, () => value.UseConstant = false);

menu.ShowAsContext();

}

EditorGUIUtility.AddCursorRect(btnRect, MouseCursor.Arrow);

if (value.UseConstant)

{

entry.Property.Children["ConstantValue"].Draw(label);

}

else

{

entry.Property.Children["Variable"].Draw(label);

}

}

GUILayout.EndVertical();

}

}

```

```
[CreateAssetMenu(fileName = "FloatVariable", menuName = "Scriptable Object Variables/Float")]

public class FloatVariable : ScriptableObjectVariable<float>

{

}

[Serializable]

public class FloatReference : VariableReference<float, FloatVariable>

{

}

[CreateAssetMenu(fileName = "IntVariable", menuName = "Scriptable Object Variables/Int")]

public class IntVariable : ScriptableObjectVariable<int>

{

}

[Serializable]

public class IntReference : VariableReference<int, IntVariable>

{

}

```

```
public abstract class ScriptableObjectVariable<T> : ScriptableObject

{

[LabelText("$name")]

public T Value;

}

public abstract class VariableReference<TValue, TVariable>

where TVariable : ScriptableObjectVariable<TValue>

{

public bool UseConstant;

public TValue ConstantValue;

[SuffixLabel("$GetValueString", true)]

public TVariable Variable;

public TValue Value

{

get { return !this.UseConstant && this.Variable ? this.Variable.Value : this.ConstantValue; }

}

private string GetValueString()

{

return this.ConstantValue.ToString() + "    ";

}

}

```
DisallowChildObjects

Attribute:

```
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]

public class DisallowChildObjectsAttribute : Attribute

{

}

```

Drawer

```
[OdinDrawer]
[DrawerPriority(DrawerPriorityLevel.WrapperPriority)]
public class DisallowChildObjectsAttributeDrawe<T> : OdinAttributeDrawer<DisallowChildObjectsAttribute, T>
    where T : UnityEngine.Object
{
    public override bool CanDrawTypeFilter(Type type)
    {
        return type.InheritsFrom<Behaviour>() || type == typeof(GameObject);
    }

    private class Context
    {
        public string ErrorMessage;
    }

    protected override void DrawPropertyLayout(IPropertyValueEntry<T> entry, DisallowChildObjectsAttribute attribute, GUIContent label)
    {
        var context = entry.Property.Context.Get(this, "isValid", (Context)null);

        if (context.Value == null)
        {
            context.Value = new Context();
            entry.OnValueChanged += i => Validate(entry, context.Value);
            Validate(entry, context.Value);
        }

        if (context.Value.ErrorMessage != null)
        {
            SirenixEditorGUI.ErrorMessageBox(context.Value.ErrorMessage);
        }

        this.CallNextDrawer(entry, label);
    }

    private static void Validate(IPropertyValueEntry<T> entry, Context context)
    {
        context.ErrorMessage = null;
        var targets = entry.Property.Tree.WeakTargets;
        var values = entry.WeakValues;

        for (int i = 0; i < targets.Count; i++)
        {
            // Multiselection
            var target = targets[i] as Behaviour;
            var value = entry.Values[i];

            if (target == null)
            {
                break;
            }

            if (value == null)
            {
                continue;
            }

            var go = value as GameObject;
            if (go == null)
            {
                var behaviour = value as Behaviour;
                if (behaviour)
                {

                    go = behaviour.gameObject;
                }
            }

            if (go == null)
            {
                continue;
            }

            if (target.GetComponentsInChildren(typeof(Transform)).Contains(go.transform))
            {
                context.ErrorMessage = "Child objects are not allowed.";
                break;
            }
        }
    }
}

```

Usage:

```
public class SomeMonoBehaviour : MonoBehaviour

{

    [DisallowChildObjects]

    public List<GameObject> Test1;

    [DisallowChildObjects]

    public List<MonoBehaviour> Test2;

}

```
Renamer

```
// Editor window that tracks selection order and then based on configuration
// will rename the selection based on the format choosen
// IE: Spawner_01 - Spawner_02 - Spawner_03

#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Sirenix.Utilities.Editor;

 public class Renamer : OrderedSelectionEditor
{
    [InfoBox("Key = {0} && Start Count == {1}")]
    public string Format = "{0}_{1}";
    public string Key;
    public int StartCount = 1;

    private static Renamer m_Window;
    private List<int> _listOrderedSelection = new List<int>();

    public void OnSelectionChange()
    {
         var listIdObjectsCurrentSelection = new List<int>();
        foreach (var iObject in Selection.instanceIDs)
        {
             listIdObjectsCurrentSelection.Add(iObject);
        }

         var listIdIndexesToDelete = new List<int>();
        var count = -1;
        foreach (var iObject in _listOrderedSelection)
        {
             count += 1;
            if (!listIdObjectsCurrentSelection.Contains(iObject))
            {
                 listIdIndexesToDelete.Add(count);
            }
         }
         int indexPenalty = 0;
        foreach (var indexToDelete in listIdIndexesToDelete)
        {
             _listOrderedSelection.RemoveAt(indexToDelete - indexPenalty);
            indexPenalty++;
        }
         foreach (var iObject in Selection.instanceIDs)
        {
             if (!_listOrderedSelection.Contains(iObject))
            {
                 _listOrderedSelection.Add(iObject);
            }
         }
     }

     public List<GameObject> OrderedSelection()
    {
         var ret = new List<GameObject>();
        foreach (var iObject in _listOrderedSelection)
        {
             var obj = EditorUtility.InstanceIDToObject(iObject);
            var gameObj = GameObject.Find(obj.name);
            if (gameObj)
            {
                 ret.Add(gameObj);
            }
         }
         return ret;
    }

     [MenuItem("Tools/RGL/Editor/Renamer")]
    static void Init()
    {
         m_Window = GetWindow<Renamer>();
        m_Window.position = GUIHelper.GetEditorWindowRect().AlignCenter(700, 700);
        m_Window.titleContent = new GUIContent("Renamer");
        m_Window.Repaint();
    }

     [Button(ButtonSizes.Large)]
    public void Rename()
    {
         int count = StartCount;
        List<GameObject> selection = OrderedSelection();
        for (int i = 0; i < selection.Count; i++) {
            selection[i].name = string.Format(Format, Key, count);
            count += 1;
        }
     }
 }
 #endif

```

```

```
OdinInspector Wiki

## Welcome to the Odin Inspector Wiki

A community and place to store scripts for Odin Inspector.

***Note: Scripts are made by the community for the community and might be outdated.***

## Custom Scripts

Tested on Odin v1.0.6.1

* Scriptable Object EventSystem - by Rocktavious
* Player Prefs Editor - by Rocktavious
* MultiTagSystem - by Rocktavious
* Renamer - By Rocktavious
* AutoReference - By Rocktavious
* TagSelector - *Renders a string as an enum-like drop-down that lets you choose from a value from the Unity tags list. - By Bjarke*
* DisallowChildObjects - By Bjarke
* ScriptableObjectVariable\_Drawers - *Scriptable object variables are pretty cool, search for "Unite Austin 2017 - Game Architecture with Scriptable Objects" on youtube* - By Bjarke
* ImageHeader - *Draws the image specified in the attribute* - By Bjarke
* BetterSpacing - *A better Space attribute, that lets you specify SpaceBefor and SpaceAfter* - By Bjarke
* System.TimeSpan\_Drawer - System.TimeSpan Drawer - By Bjarke
* EnumList - *Handy if you have a list, where the index corresponds an enum value* - By Bjarke

## Latest activity

Photos and videos are a great way to add visuals to your wiki. Add one below!

File:Placeholder
AutoReference

```
// Adds an inline button to the attribute that when clicked
// will parse through the hierarchy of the gameObject and find
// a component matching the type auto filling out the value reference to it

// Usage.cs
using UnityEngine;

public class Usage : MonoBehaviour
{
    [AutoReference]
    public Rigidbody m_Body;
}

// AutoReferenceAttribute.cs
using System;

[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public class AutoReferenceAttribute : Attribute
 {
     public AutoReferenceAttribute() { }
}

// AutoReferenceAttributeDrawer.cs
#if UNITY_EDITOR
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using UnityEditor;
using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Sirenix.Utilities.Editor;

[OdinDrawer]
[DrawerPriority(DrawerPriorityLevel.AttributePriority)]
public class AutoReferenceAttributeDrawer : OdinAttributeDrawer<AutoReferenceAttribute>
{
    protected override void DrawPropertyLayout (InspectorProperty property, AutoReferenceAttribute attribute, GUIContent label)
    {
         if (property.Tree.WeakTargets.Count != 1)
        {
             SirenixEditorGUI.ErrorMessageBox("AutoReferenceAttribute doesn't support editing more then 1 at a time!");
            return;
        }
         if ((property.Tree.WeakTargets[0] as Component) == null)
        {
             SirenixEditorGUI.ErrorMessageBox("AutoReferenceAttribute doesn't support being on anything but a MonoBehaviour!");
            return;
        }

         EditorGUILayout.BeginHorizontal();

        EditorGUILayout.BeginVertical();
        this.CallNextDrawer(property, label);
        EditorGUILayout.EndVertical();

        if (GUILayout.Button("Auto Populate", EditorStyles.miniButton, GUILayoutOptions.ExpandWidth(false).MinWidth(20)))
        {
             ConnectReference(property);
        }
         /* TODO: Fix multi options available
        if button clicked {
        var components = GetComponentsInChildren();
        if components.length > 1 {
        var selector = GenericSelector(false, components, x => x.gameObject.name); // (something like that)
        selector.Confirmed += x =>  property.BaseValueEntry.WeakSmartValue = x.First();
        selector.ShowInPopup(optionalRectToMakeItLineUpWithTheProperty)
        } }
         */

         EditorGUILayout.EndHorizontal();
    }

     private void ConnectReference(InspectorProperty property)
    {
         Component obj = property.Tree.WeakTargets[0] as Component;
        property.BaseValueEntry.WeakSmartValue = obj.gameObject.GetComponentInChildren(property.ValueEntry.BaseValueType);
    }
 }
 #endif

```
BetterSpacing

SpacingAttribute.cs

```
namespace Sirenix.OdinInspector

{

using System;

using UnityEngine;

/// <summary>

/// Spacing is used to inject space before and/or after field rendering.

/// </summary>

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method)]

[DontApplyToListElements]

public class SpacingAttribute : Attribute

{

/// <summary>

/// The amount of space that should be added before field rendering.

/// </summary>

public int Before { get; set; }

/// <summary>

/// The amount of space that should be added after field rendering.

/// </summary>

public int After { get; set; }

public SpacingAttribute() { }

public SpacingAttribute(int after)

{

this.After = after;

}

public SpacingAttribute(int before, int after)

{

this.After = after;

this.Before = before;

}

}

}

```

SpacingAttributeDrawer.cs

```
#if UNITY_EDITOR

namespace Sirenix.OdinInspector.Editor.Drawers

{

    using Utilities.Editor;

    using UnityEngine;

    /// <summary>

    /// Draws properties marked with <see cref="SpacingAttribute"/>.

    /// Adds GUILayout.Space before and/or after field rendering, while maintaining any drawers further down in the drawer chain.

    /// </summary>

    [OdinDrawer]

    [DrawerPriority(DrawerPriorityLevel.SuperPriority)]

    public sealed class SpacingAttributeDrawer : OdinAttributeDrawer<SpacingAttribute>

    {

        /// <summary>

        /// Draws the attribute.

        /// </summary>

        protected override void DrawPropertyLayout(InspectorProperty property, SpacingAttribute attribute, GUIContent label)

        {

            GUILayout.Space(attribute.Before);

            this.CallNextDrawer(property, label);

            GUILayout.Space(attribute.After);

        }

    }

}

#endif

```

Usage:

```
[Spacing(Before = 5)]

public int AddSpacingBefore = 0;

```
A Torn Journal

### **Entry 1)**

First, an introduction. I am Archmage Vargoth, leader of the first Kirin Tor expedition to Draenor. We have accompanied Alliance forces through the Dark Portal, and now set up base camp - Kirin'Var Village - in Farahlon, near the ancestral home of the Laughing Skull clan of orcs. Such a lovely place!

Entry 42) Ley-line excavations continue, with pleasant results. We were surprised to find several similarities in the ley-line structures between Azeroth and Draenor, possibly indicating a similar genesis?
My close associate Naberius
 reports that the Laughing Skulls have established a truce with the
Alliance forces in the area. Always distrustful of orcs, I thought to
myself, "This could be heaven or this could be hell."

Entry 205) Most of the Alliance forces have left for Azeroth. Hopefully the carefully-compiled reports that we sent with General Turalyon will make it back to Dalaran safely.
Ner'zhul's reckless portals have torn Farahlon apart, its green hills now quickly crumbling as the Twisting Nether corrupts the earth. I have to find a passage back to the place I was before!

Entry 1363) Year 14, and Kirin'Var still stands. We gather daily for a feast conjured by Luminrath, and Dathric's steely mageblade
 has managed to protect the village from intruders. The destruction of
Draenor has proven to be a mixed blessing as the magical events that
followed have proven more interesting than we expected!

Entry 1969)
<This page is hastily scribbled, in stark contrast to the perfect calligraphy of the earlier entries.>

We've been attacked... Kael'thas' army... thousands of them!!
Floating ships... far larger than any zeppelin I've seen... strong, foreign magical energy... and some sort of mana bomb?
I've cast a protective ward on the tower... no sign of the others...

<the writing trails off>

Entry 1970) Kael's forces took us completely by surprise, and
have trapped me in Kirin'Var's tower. An arcane golem guards the door
below, programmed to aggrieve. I can study all the books I want, but I
can never leave!
Though Kael's magic prevents me from communicating with him, I sense that my apprentice Ravandwyr still lives.
Revelations: Page 507

> *having discovered in that alcove*
>
>

> *copies of certain magazines*
>
>

> *esoteric and precious, and, yes,*
>
>

> *I knew then, knew utterly,*
>
>

> *the deal done in my heart forever,*
>
>

> *though how I knew not,*
>
>

> *nor ever have.*
>
>

Your hands slick with your own blood, you move to turn a few pages back -- though realise that some near this one are stuck together. You peel them apart.
TagSelector

TagSelectorAttribute.cs

```
namespace Sirenix.OdinInspector
{
   using System;

   [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
   public class TagSelectorAttribute : Attribute
   {
   }
}

```

TagSelectorAttributeDrawer.cs

```
#if UNITY_EDITOR

namespace Sirenix.OdinInspector.Editor.Drawers
{
    using Utilities.Editor;
    using UnityEngine;
    using UnityEditor;
    using System.Linq;
    using System.Collections.Generic;

    [OdinDrawer]
    public class TagSelectorAttributeDrawer : OdinAttributeDrawer<TagSelectorAttribute, string> // Draw for tag field attributes on string members
    {
        protected override void DrawPropertyLayout(IPropertyValueEntry<string> entry, TagSelectorAttribute attribute, GUIContent label)
        {
            entry.SmartValue = label != null ? EditorGUILayout.TagField(label, entry.SmartValue)
                                             : EditorGUILayout.TagField(entry.SmartValue);
        }
    }
}

#endif

```

Usage

```
[TagSelector]
public string SomeTagField;

```
Revelations: Page 505

> *Returning in awe I took it so carefully up*
>
>

> *That the second shot, equally unintended*
>
>

> *notched the hardwood banister*
>
>

> *and brought a strange bright smell of ancient sap to life*
>
>

> *in a beam of dusty sunlight.*
>
>

> *Absolutely alone*
>
>

> *in awareness of the mechanism.*
>
>

> *Like the first time you put your mouth*
>
>

> *on a woman.*
>
>

At the bottom of the page and immediately beneath the poem, a smaller note in vibrant red reads:

A thin arrow connects the words to the poem.

It all looks to be an older form of Thalassian. It seems you may have to find a way to translate it.

Perhaps the other bookshelves could be of use.
A Leatherbound Book

Nervous at a public speaking engagement? Imagining your audience
in their underwear not helping? What if you imagine them as sheep? Still
 nothing? We will turn your audience into sheep.

Ask your mage friend to cast a slowing charm on you and take the time to stop and smell the roses. Also fun at races!

Teleportation is the chicest way to get around. Nothing ruins your second date chances faster than an acute case of N.O. (Netherdrake Odor).

A friend of a mage never hungers or thirsts. Summoned food has no transmuted fats!

Think a frosted mug is the best way to keep your ale cool? You should see a frostbolted mug.

Studies show that most master works of literature have been written while the author was under the influence of arcane intellect.

Have a white Winter Veil every year when mages summon blizzards for you. (Warning: standing outside during an arcane blizzard may cause slight tingling in the fingers and painful death.)

And always remember: If anything should go astray, a mage is just a blink away.

This pamphlet was printed on summoned paper.