This file is indexed.

/usr/share/games/ardentryst/helpers.py is in ardentryst 1.71-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#------------------------------------------------------------------------
#
#    This file is part of Ardentryst.
#
#    Ardentryst is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    Ardentryst is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with Ardentryst.  If not, see <http://www.gnu.org/licenses/>.
#
#    Copyright 2007, 2008, 2009 Jordan Trudgett
#
#------------------------------------------------------------------------

# It is truly OVER 9000

import pygame, sys, os, time, cPickle
from pygame.locals import *

sd = ""

videoticker = 0
videotake = False
                  # Put on true to record a bunch of tga files (Screenshot directory)
                  # use mencoder to make them a video: (unix command)
                  # mencoder "mf://*.tga" -vf scale=320:240 -mf type=tga:fps=20 -ovc lavc -o output.avi

WIDESCREENBIT = False
WSSURF = None
LOGGING = True
PROFILING = False

ABILITY_DESC = {
    "Attack": "The standard single attack. This is the staple of any fight in Ardentryst. This will usually "\
              "be a swing with a sword, a whack with a staff or a shot from a bow. In some cases, this is "\
              "impossible, for example if you run out of mana to shoot magical arrows.",
    "Lunge": "Pyralis is able to extend his arm whilst lunging forward to create a momentum-based attack. "\
             "This is a great finisher attack as it has slow recharge time but can do a lot of damage if "\
             "you are running fast.",
    "Spin-slash": "A spinning attack, where the attack power of each slash increases with each spin for 3 spins. Best for when there are enemies on both sides of you.",
    "Uppercut": "An uppercut attack. If you can jump, you will jump with the attack. Better for enemies above you.",
    "Focus Magic": "Before any spell can be cast, a magician must focus their mind. Focus Magic does this, "\
                   "and for a short amount of time, spells can be cast. It requires nothing to use, because it "\
                   "does nothing by itself. This move must be followed up by a spell move to create an attack.",
    "Fire": "Releases a wave of fire from your fingertips. This fire is relatively weak, but is great for getting "\
            "rid of pests that cannot be easily reached. Use the up and down keys to sway the flames higher or lower."\
            "Mana cost: 4 MP",
    "Blaze": "A stronger fire spell. Use the up and down keys to sway the flames higher or lower. Mana cost: 12 MP",
    "Burst": "A defensive spell that requires no mana. Burst forces soul energy in all directions, but is strongest "\
             "at the source. Many enemies will be repelled by this.",
    "Ice": "Creates magical vortexes around nearby enemies that attract cold particles. This will hurt enemies by freezing "\
           "them. Mana cost: 4 MP per enemy",
    "Implosion": "Implodes an enemy by forcing magical power into the air around them. Does tremendous damage as they are "\
                 "squashed. Mana cost: 15 MP",
    "Frost": "A stronger ice spell. Mana cost: 8 MP per enemy",
    "Teleport": "Nyx can teleport to the beginning of a level. Mana cost: 10 MP",
    "Quake": "An earthquake which will shake up ground enemies. Mana cost: 10 MP",
    "Focus Summon": "Focuses your thoughts in preparation for summoning.",
    "Summon Maea": "Summons the dragon god Maea. Mana cost: 80 MP",
    }

def set_savedirectory(sd):
    global SAVEDIRECTORY
    SAVEDIRECTORY = sd

def set_profiling():
    global PROFILING
    PROFILING = True

def logsave(SD):
    global sd
    sd = SD

def logfile(text):
    global LOGGING, sd
    if not LOGGING: return
    if type(text) != str:
        try:
            text = str(text)
        except:
            print "Warning, logfile call incorrect:", str(text), "(Got type", str(type(text))
            return
    try:
        src = open(os.path.join(sd, "log.txt"), "r").readlines()
    except:
        open("log.txt", "w")
        src = []
        
    if len(src) and "|" in src[-1]:
        if src[-1][src[-1].index("|")+1:].strip() == text.strip():
            return
    src.append(time.ctime() + "| " + text+"\n")
    fileobj = open(os.path.join(sd, "log.txt"), "w")
    fileobj.writelines(src)

def WS_PIC(pic):
    global WSSURF
    WSSURF = pic

def Quit():
    global PROFILING
    pygame.display.quit()
    pygame.mixer.quit()
    if not PROFILING:
        sys.exit(0)

def myupdate(rects):
    global WIDESCREENBIT, WSSCREEN
    if WIDESCREENBIT:
        sc_copy = SCREEN.convert()
        WSSCREEN.fill((0,0,0))
        WSSCREEN.blit(sc_copy, (100, 22))

        if type(rects) != list:
            rects = [rects]
        for rect in rects:
            rect.move_ip(100, 22)
    pygame.display.update(rects)

def myflip():
    global WIDESCREENBIT, SCREEN, WSSCREEN

    if WIDESCREENBIT:
        sc_copy = SCREEN.convert()
        WSSCREEN.fill((0,0,0))
        WSSCREEN.blit(sc_copy, (100, 22))
        pygame.display.update(Rect(100,22,640,480))
    else:
        pygame.display.flip()

def definescreen(SCR):
    global SCREEN
    SCREEN = SCR

def defineWSscreen(SCR):
    global WIDESCREENBIT, WSSCREEN

    if SCR == False:
        WIDESCREENBIT = False
        return

    WSSCREEN = SCR
    WIDESCREENBIT = True

def ge():
    global screen, SCREEN, videoticker, videotake, WIDESCREENBIT, SAVEDIRECTORY
    try:
        saveimage = screen
    except:
        try:
            saveimage = SCREEN
        except:
            print "Fallback! Not processing GE properly."
            return pygame.event.get()

    if pygame.event.peek(QUIT):
        Quit()
    evlist = pygame.event.get()
    for i in range(len(evlist)):
        event = evlist[i]
        if event.type == KEYDOWN:
            if event.key == K_RETURN and ((pygame.key.get_mods() & KMOD_LALT) or (pygame.key.get_mods() & KMOD_RALT)):
                pygame.display.toggle_fullscreen()
            elif event.key == K_F12:
                if WIDESCREENBIT:
                    sc_copy = saveimage.convert()
                    saveimage.blit(sc_copy, (100, 22))
                    saveimage.blit(WSSURF, (0,0))
                scrshotnum = 0
                for entry in os.listdir(os.path.join(os.getcwd(), "Screenshots")):
                    if entry.startswith("Screenshot") and entry.endswith(".tga"):
                        scrshotnum = int(entry[10:-4]) + 1
                pygame.image.save(saveimage, os.path.join(SAVEDIRECTORY, "Screenshots","Screenshot"+str(scrshotnum).zfill(5)+".tga"))
                evlist[i] = None
                print "\a"

    if videotake:
        scrshotnum = 0
        for entry in os.listdir(os.path.join(os.getcwd(), "Screenshots")):
            if entry.startswith("Screenshot") and entry.endswith(".tga"):
                scrshotnum = int(entry[10:-4]) + 1
        pygame.image.save(pygame.transform.scale(saveimage, (320, 240)), os.path.join("Screenshots","Screenshot"+str(scrshotnum).zfill(5)+".tga"))

    videoticker += 1

    while None in evlist:
        evlist.remove(None)

    return evlist