<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://drl.chaosforge.org/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://drl.chaosforge.org/w/index.php?action=history&amp;feed=atom&amp;title=Modding%3ATutorial%2FBuilding_an_Episode%2FSource</id>
		<title>Modding:Tutorial/Building an Episode/Source - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://drl.chaosforge.org/w/index.php?action=history&amp;feed=atom&amp;title=Modding%3ATutorial%2FBuilding_an_Episode%2FSource"/>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/w/index.php?title=Modding:Tutorial/Building_an_Episode/Source&amp;action=history"/>
		<updated>2026-05-19T16:24:28Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.21.1</generator>

	<entry>
		<id>https://drl.chaosforge.org/w/index.php?title=Modding:Tutorial/Building_an_Episode/Source&amp;diff=1669&amp;oldid=prev</id>
		<title>Game Hunter: quick fix</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/w/index.php?title=Modding:Tutorial/Building_an_Episode/Source&amp;diff=1669&amp;oldid=prev"/>
				<updated>2012-01-25T04:58:58Z</updated>
		
		<summary type="html">&lt;p&gt;quick fix&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 04:58, 25 January 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; if killedby == &amp;quot;defeated the Mastermind&amp;quot; then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; if killedby == &amp;quot;defeated the Mastermind&amp;quot; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; killedby = &amp;quot;defeated the Cyberdemon&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; killedby = &amp;quot;defeated the Cyberdemon&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; elseif killedby == nil then&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; killedby = &amp;quot;played through the classics&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; player:mortem_print( &amp;quot; &amp;quot;..player.name..&amp;quot;, level &amp;quot;..player.explevel..&amp;quot; &amp;quot;..klasses[player.klass].name..&amp;quot;, &amp;quot;..killedby )&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; player:mortem_print( &amp;quot; &amp;quot;..player.name..&amp;quot;, level &amp;quot;..player.explevel..&amp;quot; &amp;quot;..klasses[player.klass].name..&amp;quot;, &amp;quot;..killedby )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Game Hunter</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/w/index.php?title=Modding:Tutorial/Building_an_Episode/Source&amp;diff=1665&amp;oldid=prev</id>
		<title>Game Hunter: source added</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/w/index.php?title=Modding:Tutorial/Building_an_Episode/Source&amp;diff=1665&amp;oldid=prev"/>
				<updated>2012-01-25T04:13:14Z</updated>
		
		<summary type="html">&lt;p&gt;source added&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- module.lua&lt;br /&gt;
&lt;br /&gt;
module = {&lt;br /&gt;
    id = &amp;quot;classic&amp;quot;,&lt;br /&gt;
    name = &amp;quot;Classic Mode&amp;quot;,&lt;br /&gt;
    author = &amp;quot;Kornel Kisielewicz&amp;quot;,&lt;br /&gt;
    webpage = &amp;quot;http://chaosforge.org/&amp;quot;,&lt;br /&gt;
    version = {0,2,0},&lt;br /&gt;
    drlver = {0,9,9,5},&lt;br /&gt;
    type = &amp;quot;episode&amp;quot;,&lt;br /&gt;
    description = &amp;quot;Episodic MOD example.&amp;quot;,&lt;br /&gt;
    difficulty = true,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- main.lua&lt;br /&gt;
&lt;br /&gt;
core.declare( &amp;quot;classic&amp;quot;, {} )&lt;br /&gt;
&lt;br /&gt;
require &amp;quot;classic:data/phobos_arena&amp;quot;&lt;br /&gt;
&lt;br /&gt;
function classic.OnMortemPrint(killedby)&lt;br /&gt;
    if killedby == &amp;quot;defeated the Mastermind&amp;quot; then&lt;br /&gt;
        killedby = &amp;quot;defeated the Cyberdemon&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    player:mortem_print( &amp;quot; &amp;quot;..player.name..&amp;quot;, level &amp;quot;..player.explevel..&amp;quot; &amp;quot;..klasses[player.klass].name..&amp;quot;, &amp;quot;..killedby )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function classic.OnCreateEpisode()&lt;br /&gt;
	local BOSS_LEVEL = 10&lt;br /&gt;
	player.episode = {}&lt;br /&gt;
  &lt;br /&gt;
	player.episode[1]     = { style = 1, script = &amp;quot;intro&amp;quot; }&lt;br /&gt;
	for i=2,BOSS_LEVEL-1 do&lt;br /&gt;
		player.episode[i] = { style = 1, number = i, name = &amp;quot;Phobos&amp;quot;, danger = i}&lt;br /&gt;
	end&lt;br /&gt;
	player.episode[10]    = { style = 3, script = &amp;quot;phobos_arena&amp;quot; }&lt;br /&gt;
	&lt;br /&gt;
	statistics.bonus_levels_count = 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function classic.OnGenerate()&lt;br /&gt;
	Generator.reset()&lt;br /&gt;
	Generator.generate_tiled_dungeon()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function classic.OnWinGame()&lt;br /&gt;
	ui.plot_screen([[&lt;br /&gt;
Once you beat the Cyberdemon and clean out the moon&lt;br /&gt;
base you're supposed to win, aren't you? Aren't you?&lt;br /&gt;
Where's your fat reward and ticket back home? What&lt;br /&gt;
the hell is this? It's not supposed to end this way!&lt;br /&gt;
      &lt;br /&gt;
It stinks like rotten meat but it looks like the&lt;br /&gt;
lost Deimos base. Looks like you're stuck on&lt;br /&gt;
The Shores of Hell. And the only way out is through...&lt;br /&gt;
]])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- phobos_arena.lua&lt;br /&gt;
&lt;br /&gt;
Levels(&amp;quot;phobos_arena&amp;quot;,{&lt;br /&gt;
  name = &amp;quot;Phobos Arena&amp;quot;,&lt;br /&gt;
  entry = &amp;quot;Then at last he found the Phobos Arena!&amp;quot;,&lt;br /&gt;
  welcome = &amp;quot;You enter a big arena. There's blood everywhere. You hear heavy mechanical footsteps...&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  Create = function ()&lt;br /&gt;
    Level.fill(&amp;quot;wall&amp;quot;)&lt;br /&gt;
    Level.fill(&amp;quot;floor&amp;quot;, area.FULL_SHRINKED )&lt;br /&gt;
    local scatter_area = area.new( 5,3,68,15 )&lt;br /&gt;
    local translation = {&lt;br /&gt;
        ['.'] = &amp;quot;blood&amp;quot;,&lt;br /&gt;
        ['#'] = &amp;quot;gwall&amp;quot;,&lt;br /&gt;
        ['&amp;gt;'] = &amp;quot;stairs&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
    Level.scatter_put(scatter_area,translation, [[&lt;br /&gt;
      .....&lt;br /&gt;
      .###.&lt;br /&gt;
      .###.&lt;br /&gt;
      .###.&lt;br /&gt;
      .....&lt;br /&gt;
    ]],&amp;quot;floor&amp;quot;,12)&lt;br /&gt;
&lt;br /&gt;
    Level.flags[ LF_NOHOMING ] = true&lt;br /&gt;
    Level.scatter(area.FULL_SHRINKED,&amp;quot;floor&amp;quot;,&amp;quot;blood&amp;quot;,100)&lt;br /&gt;
    Generator.set_permanence( area.FULL )&lt;br /&gt;
    player.flags[ BF_ENTERBOSS1 ] = true&lt;br /&gt;
  end,&lt;br /&gt;
&lt;br /&gt;
  OnEnter = function ()&lt;br /&gt;
    local boss = Level.summon(&amp;quot;cyberdemon&amp;quot;)&lt;br /&gt;
    boss.flags[ BF_BOSS ] = true&lt;br /&gt;
  end,&lt;br /&gt;
  &lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Game Hunter</name></author>	</entry>

	</feed>