The Heretic Hack Editor (HHE)

HHE was a game behavior editor for Heretic, written by Greg Lewis and designed to be similar to the popular DeHackEd behavior editor for Doom. However, HHE never reached the level of polish that DeHackEd did, and there are some distinct gotchas when trying to use it, especially with the Shadow of the Serpent Riders edition of Heretic.

This page is meant to help with some of the more obtuse characteristics of the editor, for anyone who might still want to mod Heretic the old fashioned way. As far as I know, Chocolate Heretic is the only modern port that can use HHE patches; other ports generally have their own methods for changing game behavior. The program itself is for DOS and is unlikely to work on anything newer than Windows 9x versions.

General usage of the editor is very similar to DeHackEd, and information on modding with DeHackEd usually applies, except that HHE's code pointer section might not be functional.

This page is a work in progress and some info may be incomplete. Feel free to drop me an e-mail if you'd like to offer any corrections info I've missed.


SotSR setup

For working with Heretic: Shadow of the Serpent Riders (aka Heretic v1.3) some changes to the default HHE.INI file are required. The values to use are as follows:

# The size of the user-defined heretic.exe file.
size = 728031

# These are the offsets for the various data sections...
thingoff = 617600
soundoff = 639734
frameoff = 583860
spriteoff = 583348
ammooff = 635780
weaponoff = 636204
textoff = 563284
codepoff = 258020

By default, HHE works with v1.0 of Heretic. I am not sure of the values needed to use it with v1.2, but they are unlikely to be necessary. Also note that loading an HHE patch built for the SotSR version of Heretic in Chocolate Heretic will require an additional -hhever 1.3 parameter.

Bits

Some of the bits/flags have rather unhelpful labels. Here are some clues for some of the more cryptic ones.

Bits 2:

  • 12: Unknown - MF2_PASSMOBJ, allows this thing to move over/under other things (given to monsters)
  • 13: Particles (?) - MF2_CANNOTPUSH, this thing cannot push other things
  • 14: Unknown - MF2_FEETARECLIPPED (For internal use)
  • 15: Varying Damage - MF2_BOSS, this thing is a boss monster
  • 17: Does Not Push Things - MF2_NODMGTHRUST, doesn't cause damage momentum when hitting something

Weapon modding

Note that setting the type of ammo that a weapon uses only partially works; the setting in the weapons pane determines which ammo type will be displayed on the status bar and checked when making sure the weapon hasn't run out of ammo, but attacks will subtract from whatever ammo type the code pointer was originally attached to. So if you, say, make the crossbow use a wand firing frame, it'll use wand crystals even if you leave the weapon's ammo type as arrows. Leaving them mismatched can result in some weird stuff like being able to fire the weapon infinitely and ending up with negative ammo counts. Furthermore, if you make a weapon use a different ammo type than its slot usually dictates, you may end up with problems when it comes to the automatic weapon switching when out of ammo, so you should probably stick close to the original arsenal's layout here and do more of your modding in the properties of the projectiles themselves.

Reorganizing frames

Because you can only redirect existing code pointers, rather than add/remove them freely from any frame, you may need to get creative if you want to heavily alter the gameplay. It is possible to shuffle codepointers a bit by messing around with the "next frame" property in the frame table, but at most you can use the same number of code pointers as the original, on the same frames. In addition, some frames have other hardcoded significance, for instance, certain codepointers may force an actor into a particular frame. Here is a table of frame numbers known to have special significance to the game.

The following table is a work in progress as I haven't yet matched every codepointer to the frame it occurs on (they don't always appear in the same order).

Known Special Frames (Heretic v1.3)
Frame NumberCausesAffected by
10Codepointer #0
19Codepointer #1
30Codepointer #3
31Codepointer #2
40Codepointer #4
98Codepointer #10
99Codepointer #9
103A_MakePod
114Codepointer #11
179Codepointer #12
182A_InitKeyGizmo
183A_InitKeyGizmo
184A_InitKeyGizmo
186Codepointer #13
193Codepointer #15
196Codepointer #16
211Codepointer #19
212Codepointer #18
246Codepointer #34
249Codepointer #32
261Codepointer #38
263Codepointer #43
264Codepointer #42
265Codepointer #41
303Codepointer #61
309Codepointer #64
314Codepointer #66
365Codepointer #77
372Codepointer #81
376Codepointer #83
381Codepointer #86
382Codepointer #85
383Codepointer #84
388Codepointer #89
392Codepointer #90
405Codepointer #92
411Codepointer #95
412Codepointer #94
437A_RainImpact
438A_RainImpact
439A_RainImpact
440A_RainImpact
453Codepointer #105
455Codepointer #104
457Codepointer #103
459Codepointer #106
478Codepointer #113
485Codepointer #116A_FirePhoenixPL2
486Codepointer #115
505Codepointer #118
511Codepointer #119
536Codepointer #137
554Codepointer #141
556Codepointer #143
589Codepointer #163
615Codepointer #172
616A_CheckBurnGone
622Codepointer #173A_CheckSkullFloor
623A_CheckSkullDone
637Codepointer #188
639Codepointer #186
664Codepointer #198
671Codepointer #202
706Codepointer #153
760A_SnakeAttack and A_SnakeAttack2
772Codepointer #237
803Codepointer #244
816Codepointer #247
830A_HeadAttack and A_HeadFireGrow
856Codepointer #258
884Codepointer #308
916Codepointer #325
918Codepointer #323
925Codepointer #328
928Codepointer #332
930Codepointer #331
933Codepointer #336
935Codepointer #335A_ImpXDeath2
939A_ImpExplode
993Codepointer #277
997A_Srcr1Attack
1017Codepointer #293
1026A_SorcererRise
1028Codepointer #351
1032Codepointer #356
1041Codepointer #358
1043Codepointer #362
1050Codepointer #364
1052Codepointer #363A_Sor2DthLoop
1055Codepointer #368
1056Codepointer #367
1060Codepointer #365
1078Codepointer #374
1099Codepointer #386
1100Codepointer #385
1102Codepointer #383
1103A_MinotaurDecide
1105Codepointer #390
1106A_MinotaurAtk3
1107Codepointer #389A_MinotaurDecide
1133Codepointer #396

Code pointers

Unfortunately, HHE's method of redefining code pointers is rather unintuitive. Changing the code pointer field on the frame table is of no use, and the listing on the code pointer screen doesn't clearly indicate which slots are associated with which frames (for codepointer-to-frame listing, see special frames table above).

When altering code pointers on the code pointer screen, you can direct the execution pretty much anywhere in the program. This could have useful effects but is also potentially risky to experiment indiscriminately with (you could crash the game / your computer if you send the execution to instructions that are invalid), and unlikely to be fully supported by source ports. Here is a list of which offsets, in Heretic v1.3, are associated with defined functions and what those functions are. Thing numbers referenced in this table are the HHE internal thing table numbers, not map editor thing numbers.

Known Valid Codepointer Offsets (Heretic v1.3)
OffsetSource Code nameFunction
71792A_LookMonster - Watch for target
71920A_ChaseMonster - Chase target
72464A_FaceTargetMonster - Face target
72560A_PainPlay the calling thing's pain sound, if there is one.
72592A_DripBloodSpawns blood (thing #95).
72736A_KnightAttackDeal 1d8×3 damage at melee range, otherwise if caller is a ghost knight (#130) or by random chance throw a red axe (#132), otherwise throw a green axe (#131).
72880A_ImpExplodeThrow a couple of gargoyle gibs (#126 and #127) in random direction. Potentially forces the calling actor into frame 939.
73056A_BeastPuffApproximately 1/4 chance to spawn weredragon fireball's smoke puffs (#112) with somewhat randomized spawn position.
73168A_ImpMeAttackMelee attack for 5 to 12 damage.
73248A_ImpMsAttackThing charges at target (gargoyle swoop). Random chance to not attack and go back to sight state instead.
73456A_ImpMsAttack2Deal 5 to 12 damage at melee range, or else throw a gargoyle fireball (#128)
73552A_ImpDeathHandles gargoyle death fall, forces thing to frame 935 when it hits the floor.
73600A_ImpXDeath1Setup flags (unsets solid, sets nogravity and footclip) and special for gargoyle crash splatter.
73648A_ImpXDeath2Unsets nogravity flag, checks if thing has hit floor and if so forces its state to frame 935.
73952A_ChicAttackCalls some internal checking for chickens, if passed, do a melee attack for 1 to 2 damage.
74032A_ChicLookCalls some internal checking for chickens, if passed, do A_Look
74064A_ChicChaseCalls some internal checking for chickens, if passed, do A_Chase
74096A_ChicPainCalls some internal checking for chickens, then plays the calling thing's pain sound.
74144A_FeathersRandomly spawn one or two feathers (thing #102) if the calling thing is alive, or 5 to 8 of them if the caller is dead.
74352A_MummyAttackMelee attack for 1d8×2 damage (Golem punch)
74464A_MummyAttack2Deal 1d8×2 damage to target at melee range or else launch projectile #108 (Nitrogolem attack)
74560A_MummyFX1SeekSeeking function for nitrogolem projectiles
74592A_MummySoulSpawns a golem soul (#106) with upwards momentum.
74640A_Sor1PainSets the calling thing's special variable to 20 (for Chaos Serpent rage speedup), then calls A_Pain
74688A_Sor1ChaseIf the calling thing's special variable is set, decrement it and speed up the thing's animation. Then calls A_Chase
74736A_Srcr1AttackDeal 1d8×8 damage at melee range, or shoot chaos serpent fireballs (#134). If health is less than 2/3 max then fires spreadshots. If health is less than 1/3 max then additionally gets a random chance for double attacks (can force thing's frame to 997)
75024A_SorcererRiseSpawn thing #135 (D'Sparil on foot) and makes the calling actor non-blocking. Sets the spawned D'Sparil into frame 1026.
75360A_Srcr2DecideBy random chance weighted by thing's level of HP remaining, potentially pick one of D'Sparil's teleport destinations and warp there.
75440A_Srcr2AttackDeal 1d8×20 damage at melee range, otherwise by random chance weighted by thing's remaining HP, either shoot two of thing #138 (summoning ring) to the sides or one of thing #136 (thunderbolt) at the target.
75664A_BlueSparkSpawn thing #137 (thunderbolt sparkle) with randomized momentum
75776A_GenWizardSpawn thing #122 (Disciple) if there is space; calling actor then enters its death state and spawns thing #56 (Teleport Flash)
75936A_Sor2DthInitSet actor's special variable to 7 and kill all monsters
75968A_Sor2DthLoopDecrements the actor's special variable and if it's still not zero, set actor's frame to 1052.
76000A_SorZapPlay sound "sorzap".
76032A_SorRisePlay sound "sorrise".
76064A_SorDSphPlay sound "sordsph".
76096A_SorDExpPlay sound "sordexp".
76128A_SorDBonPlay sound "sordbon".
76160A_SorSightSndPlay sound "sorsit".
76192A_MinotaurAtk1Maulotaur hammer smash for 1d8×4 damage, knocks player view down, hardcoded hit sound stfpow
76304A_MinotaurDecideMaulotaur multi-attack handler and charging initiator. Can force calling thing into frame 1103 or 1107.
76576A_MinotaurChargeMaulotaur charging handler, spawns phoenix smoke puffs (thing #88) and decrements special counter, ends charge if counter has run down. Actual charge is initiated by A_MinotaurDecide
76656A_MinotaurAtk2Fire a spreadshot of 5 maulotaur fire shots (#141) or do 1d8×5 melee damage, depending on target range
76896A_MinotaurAtk3Maulotaur fire trail (spawn thing #142) or 1d8×5 melee strike, random chance of looping to frame 1106
77072A_MntrFloorFireDo Maulotaur floor fire trail (spawns thing #143)
77184A_BeastAttackDo 1d8×3 damage at melee range or shoot a projectile of thing type #109 (Weredragon attack)
77296A_HeadAttackDeals 1d8×6 damage at melee range or else fire an iron lich projectile: possibilities are thing #117 (ice ball), #119 (fire, potentially forced to frame 830), or #120 (tornado).
77728A_WhirlwindSeekHandler for tornado seeking its target
77888A_HeadIceImpactFire a ring of 8 Iron Lich ice shards (thing #118)
78048A_HeadFireGrowCounts down using the things health variable, adjusting its vertical position. When health is 0, force frame to 830.
78112A_SnakeAttackFires Ophidian shot type 1 (#114), or forces actor to frame 760 if no target
78192A_SnakeAttack2Fires Ophidian shot type 2 (#115), or forces actor to frame 760 if no target
78272A_ClinkAttackMelee attack for 8 to 10 damage (Sabreclaw slash)
78368A_GhostOffRemoves the ghost flag from the calling thing.
78384A_WizAtk1Calls A_FaceTarget and removes the ghost flag from the calling thing.
78416A_WizAtk2Calls A_FaceTarget and sets the ghost flag on the calling thing.
78448A_WizAtk3Removes the ghost flag from the calling thing, deal 1d8×4 damage at melee range or else fire a spread of three wizard shots (thing #123)
78640A_ScreamPlays a thing's death sound. Maulotaurs (#140), mounted D'Sparils (#133), and chicken players (#99) make full-volume screams. Players (#98) make one of four different sounds depending on the intensity of death. Otherwise just makes the death sound normally.
78896A_NoBlockingUnsets the SOLID flag but also does random item drops for certain thing types
79312A_ExplodeDeal blast damage. Time Bombs, Maulotaur fire and D'Sparil lightning have some individual hardcoded effects here, everything else just explodes like a Doom rocket/barrel.
79424A_PodPainRandomly spawn pod particles (#19).
79584A_RemovePodDecrement parent's special variable (pod spawn limiting counter).
79632A_MakePodAs long as the calling actor's special variable is not 16, attempt to create a pod (#18) if there is space. The new pod's frame is forced to 103.
79872A_BossDeathHandle boss monster death specials (tag 666 when map number is 8), with hardcoded boss types per episode (things #116, #140, #135, #116, #140 respectively). Potentially kill all other monsters if episode is not E1.
80000A_ESoundPlay waterfall or wind sounds. Thing type is hardcoded and does not work for any other thing number, and HHE does not conveniently extend to these things. Sounds won't play on other things.
80048A_SpawnTeleGlitterSpawner for teleport glitter (#54).
80128A_SpawnTeleGlitter2Spawner for exit glitter (#55).
80208A_AccTeleGlitterIncrement calling actor's health variable and if it exceeds 35, increase vertical momentum by 50% of its current value.
80256A_InitKeyGizmoCreate an orb (thing #48). The frame of this orb is decided by the calling thing's type (#45 -> 182, #46 -> 183, #47 -> 184).
80352A_VolcanoSetRandomizes the tic duration of the calling thing's current frame, from 105 to 232.
80384A_VolcanoBlastVolcano eruption launching 1 to 3 lava blobs (thing #50).
80608A_VolcBallImpactHandle explosion of a volcano blob, spawning for little lava bits (thing #51)
80816A_SkullPopSpawns a player's decapitated head (thing #98), attaches player's view to it (not advisable to use on non-players)
80976A_CheckSkullFloorIf calling thing has hit floor, force it to frame 622.
81008A_CheckSkullDoneIf calling things's special2 variable has reached 666, force thing's frame to 623.
81040A_CheckBurnGoneIf calling things's special2 variable has reached 666, force thing's frame to 616.
81072A_FreeTargMobjUnsets SHOOTABLE, SOLID, FLOAT, SKULLFLY, PASSMOBJ, and LOGRAV flags, sets CORPSE, DROPOFF, NOGRAVITY flags, detaches thing from a player.
81168A_AddPlayerCorpseManage a list for existing player corpses and delete an old one if there are too many.
81264A_FlameSndPlay sound "headat1".
81296A_HideThingSet calling thing's DONTDRAW flag.
81312A_UnHideThingUnset calling thing's DONTDRAW flag.
84528A_RestoreArtifactRespawns an item, with a respawning sound effect.
84608A_RestoreSpecialThing1If the calling thing is a firemace (thing #70), then call the mace pickup randomizer. Regardless, make the calling thing visible and play a respawn sound.
84656A_RestoreSpecialThing2Respawn an item, without sound.
111056A_ContMobjSoundHardcoded sound handler for projectiles, if the calling thing type is a knight axe (#131) plays sound "kgtatk", for nitrogolem shots (#107) plays "mumhed". Does nothing otherwise.
113728A_WeaponReadyWeapon - placed on frames where the weapon is prepared to respond to the player's fire button. Contains some special handling, for instance, if called from frame 240 then there is a random chance of playing sound "stfcrk".
114128A_BeakReadyWeapon - Special handling for chicken beak's ready states
114256A_ReFireWeapon - Check if the player is holding down the fire button, and continue firing the weapon if appropriate.
114320A_LowerWeapon - Handler for putting a weapon away (lowers sprite towards bottom of screen and switches weapons when it's lowered enough.) Also handles weapon disappearing from screen if player is killed.
114416A_BeakRaiseWeapon - Special handler for the chicken beak becoming the current weapon. Weapon raising is done instantly and does not take into account Tome of Power status.
114480A_RaiseWeapon - Handler for selecting a new weapon, shows sprite rising onto the screen and selects weapon ready state depending on if the Tome of Power is active.
114720A_BeakAttackPL1Weapon - Beak peck, melee attack for 1 to 4 damage and sets player's "chickenPeck" variable to 12.
114896A_BeakAttackPL2Weapon - Super beak peck, melee attack for 1d8×4 damage and sets player's "chickenPeck" variable to 12.
115088A_StaffAttackPL1Weapon - Staff normal jab, deal 5 to 20 melee damage (no ammo)
115232A_StaffAttackPL2Weapon - Staff tomed jab, deal 18 to 81 melee damage (no ammo)
115376A_FireBlasterPL1Weapon - Dragon Claw fire, hitscan for 1d8×4 damage, accuracy decreases if refiring (1 energy orb)
115520A_FireBlasterPL2Weapon - Dragon Claw tomed fire, launches a tomed claw projectile (thing #65) which is given special fast-projectile movement logic (5 energy orbs)
115600A_FireGoldWandPL1Weapon - Elven Wand fire, hitscan for 7 to 14 damage, accuracy decreases if refiring (1 wand crystal)
115744A_FireGoldWandPL2Weapon - Elven Wand tomed fire, launch two wand projectiles (#83) at angles, plus a spread of five hitscans that do 1 to 8 damage each (1 wand crystal)
116208A_FireMacePL1Weapon - Firemace fire, usually fires a small mace ball (#71), but has random chance to lob a larger ball (#72) with momentum affected by the firing player's momentum (1 mace sphere)
116352A_MacePL1CheckDecrements the calling thing's special variable and if it's brought to or below 0, turn on the LOGRAV flag and adjust its angle/momentum.
116464A_MaceBallImpactHandle mace balls bouncing or landing in liquid, also being destroyed when done bouncing.
116624A_MaceBallImpact2Similar to the above but also spawns a pair of tiny mace balls (#73).
117056A_FireMacePL2Weapon - Firemace tomed fire, lobs a giant ball (thing #74) with momentum affected by the firing player's movement (5 mace spheres)
117184A_DeathBallImpactHandles bouncing and target-seeking properties of the giant mace ball.
117520A_SpawnRippersTomed Dragon Claw blast ring, spawns a ring of eight claw rippers (thing #67).
117664A_FireCrossbowPL1Weapon - Crossbow fire, shoot one centered large bolt (#91) and two small ones (#93) at angles (1 arrow)
117744A_FireCrossbowPL2Weapon - Crossbow tomed fire, shoot three large bolts (#92) and two small ones (#93) (1 arrow)
117888A_BoltSparkSpawns crossbow bolt glitter (thing #94)
118000A_FireSkullRodPL1Weapon - Hellstaff fire, shoot a projectile of type #76 with a random chance to force the projectile's frame to 394 (1 rune)
118080A_FireSkullRodPL2Weapon - Hellstaff tomed fire, shoot a projectile of type #77, uses special variable for seeking/sounds and special 2 variable to remember owning player (5 runes)
118208A_SkullRodPL2SeekCalls seeking missile function with parameters set for Hellstaff's tomed shots
118240A_AddPlayerRainHandler for initializing acid rain storms from Hellstaff
118416A_SkullRodStormSpawn raindrops, thing number may be #78 through #81 depending on the calling actor's special 2 variable.
118688A_RainImpactPotentially set thing's frame to 437 through 440 depending on it's special 2 variable.
118752A_HideInCeilingMove the calling thing up into the ceiling.
118784A_FirePhoenixPL1Weapon - Phoenix Rod fire, launch a projectile of type #87 and apply recoil momentum to the firing player
118896A_PhoenixPuffSpawns Phoenix shot smoke trails, two of thing type #88
119120A_InitPhoenixPL2Weapon - sets firing player's "flamecount" variable
119136A_FirePhoenixPL2Weapon - Decreases player's flamecount variable and forces weapon frame to 485 if the fire has run out, otherwise shoots flames (thing type #89) with influence from player's momentum.
119504A_ShutdownPhoenixPL2Weapon - Decrements player's Phoenix Rod ammo (1 flame orb)
119520A_FlameEndAdjusts calling thing's vertical momentum.
119552A_FloatPuffAdjusts calling thing's vertical momentum.
119584A_GauntletAttackWeapon - Gauntlet, if player is Tomed, do extended-range melee for 1d8×2 damage with puff type #63 and life steal for half of damage dealt, otherwise do 1d8×2 melee damage with puff type #62, both modes also set weapon light flash
120064A_Light0Weapon - Turns off weapon's light flash

Thing table

HHE gives the wrong names for some of the things in the things window when used with v1.3. I would guess Heretic's internal thing table was altered between versions; the discrepancy begins around entry 88 and it seems that the "Phoenix Puff" object was removed. Some of the names in HHE are also unorthodox compared to the object's official name. A ditto mark (") in the Actual Thing column means that HHE's description is accurate.

NB: The thing numbers in HHE's table are independent of the thing numbers used in creating a map (which can be customized by the program).

Number HHE's name Actual thing in v1.3
1 Crystal Vial "
2 Silver Shield "
3 Enchanted Shield "
4 Bag of Holding "
5 Map Scroll "
6 Shadowsphere "
7 Quartz Flask "
8 Wings of Wrath "
9 Invulnerability "
10 Tome of Power "
11 Morph Ovum "
12 Morph Projectile "
13 Mystic Urn "
14 Torch " (item)
15 Time Bomb " (item)
16 Time Bomb, Active "
17 Chaos Device "
18 Gasbag Pod
19 Gasbag Fragment Pod Fragment
20 Gasbag Generator Pod Generator
21 Water Droplet "
22 Water Splash "
23 Lava Splash "
24 Lava Smoke "
25 Sludge Droplet "
26 Sludge Splash "
27 Skull Hang 70 "
28 Skull Hang 60 "
29 Skull Hang 45 "
30 Skull Hang 35 "
31 Chandelier "
32 Serpent Torch "
33 Small Pillar "
34 Stalagmite, Small "
35 Stalagmite, Large "
36 Stalactite, Small "
37 Stalactite, Large "
38 Fire Brazier "
39 Barrel "
40 Brown Pillar "
41 Moss 1 " (3 strands)
42 Moss 2 " (1 strand)
43 Wall Torch "
44 Hanging Corpse "
45 Key Statue, Blue "
46 Key Statue, Green "
47 Key Statue, Yellow "
48 Key Statue Ball " (alterations affect all 3 colors)
49 Volcano "
50 Volcano Ball "
51 Volcano Chunk " (small lava fragment)
52 Tel. Spark Red 1 " (map placement ver.)
53 Tel. Spark Blue 1 " (map placement ver.)
54 Tel. Spark Red 2 " (spawned)
55 Tel. Spark Blue 2 " (spawned)
56 Teleport Flash "
57 Teleport Spot "
58 Smoke Puff 1 Staff Puff
59 Blazing Blue Puff Powered Staff Puff
60 Smoke Puff 2 Chicken Peck Puff
61 Gauntlet "
62 Gauntlet Puff PL1 "
63 Gauntlet Puff PL2 "
64 Dragon Claw "
65 Drag. Claw Puff Dragon Claw Tomed Projectile
66 Drag. Claw Sparkle " (Tomed trail)
67 Drag. Claw Spike " (Tomed rippers)
68 Drag. Claw Puff 2 Dragon Claw Wall Puff
69 Drag. Claw Puff 3 Dragon Claw Impact Puff
70 Mace Firemace
71 Mace Small Ball 1 "
72 Mace Medium Ball "
73 Mace Small Ball 2 Mace Tiny Ball (impact fragment)
74 Mace Big Ball "
75 Hellstaff "
76 Staff Shot PL1 "
77 Staff Shot PL2 "
78 Staff Drip Green "
79 Staff Drip Yellow "
80 Staff Drip Red "
81 Staff Drip Blue "
82 Wand Shot PL1 Unused?
83 Wand Shot PL2 Tomed Wand Ball
84 Wand Puff 1 "
85 Wand Puff 2 Tomed Wand Puff
86 Phoenix Rod "
87 Phoenix Shot "
88 Phoenix Puff Phoenix Smoke Trail
89 Phoenix Smoke Tomed Phoenix Rod Fire
90 Phoenix Flame Ethereal Crossbow
91 Ethereal Crossbow Crossbow Shot (center)
92 Arrow Shot 1 Crossbow Shot (Tomed center)
93 Arrow Shot 2 Crossbow Shot (side)
94 Arrow Fragment Tomed Crossbow Glitter
95 Arrow Trail Blood Splat 1
96 Blood Drip 1 Blood Splat 2
97 Blood Drip 2 Player
98 Player Bloody Skull (from gibbed player)
99 Bloody Skull Chicken, Player
100 Chicken, Player Chicken, Monster
101 Chicken, Monster Chicken Feather
102 Chicken Feather Golem
103 Mummy Nitrogolem
104 Mummy Chief Golem Ghost
105 Mummy Ghost Nitrogolem Ghost
106 Mummy Chief Ghost Golem soul
107 Rising Spirit Nitrogolem attack
108 Flaming Skull Weredragon
109 Weredragon Weredragon attack
110 Weredragon Shot 1 Unused?
111 Weredragon Shot 2 Unused?
112 Weredragon Shot 3 Weredragon attack smoke trail
113 Weredragon Shot 4 Ophidian
114 Ophidian Ophidian blue shot
115 Ophidian Ice Ball Ophidian red shot
116 Ophidian Fire Ball Iron Lich
117 Lich, Iron Iron Lich ice shot
118 Lich Ice Crystal Iron Lich ice shard
119 Lich Ice Shard Iron Lich fire shot
120 Lich Fire Iron Lich tornado
121 Lich Tornado Sabreclaw
122 Clink Disciple of D'Sparil
123 Wizard Disciple shot
124 Wizard Shot 1 Gargoyle
125 Gargoyle Fire Gargoyle
126 Garg. Leader Gargoyle gibs 1
127 Garg. Glob 1 Gargoyle gibs 2
128 Garg. Glob 2 Gargoyle fireball
129 Garg. Fireball Undead Warrior
130 Knight Undead Warrior Ghost
131 Knight Ghost UW Green Axe
132 Knight Green Axe UW Red Axe
133 Knight Red Axe D'Sparil on Serpent
134 D'Sparil Beast Chaos Serpent fireball
135 D'Sp. Beast Fire D'Sparil, dismounted
136 D'Sparil D'Sparil thunderbolt
137 D'Sparil Attack D'Sparil thunderbolt trail
138 D'Sp. Attack Part D'Sparil summoning effect
139 D'Sp Summon Ring D'Sparil teleporting?
140 Sorceror Teleport Maulotaur
141 Maulotaur Maulotaur fire spread
142 Maulotaur Fireball Maulotaur ground trail?
143 Maul. Explosion Maulotaur ground flame
144 Maul. Ground Attack Green Key
145 Green Key Blue Key
146 Blue Key Yellow Key
147 Yellow Key Wand Crystal
148 Wand Crystal Crystal Geode
149 Wand Crystal Geode Mace Spheres
150 Mace Balls, Small Pile of Mace Spheres
151 Mace Balls, Large Ethereal Arrows
152 Ethereal Arrows Quiver of Ethereal Arrows
153 Eth. Arrow Quiver Lesser Runes
154 Lesser Runes Greater Runes
155 Greater Runes Flame Orb
156 Flame Orb Inferno Orb
157 Inferno Orb Claw Orb
158 Claw Orb Energy Orb
159 Energy Orb Wind
160 Clipboard Clipboard (in-editor use)