1//************************************************************************** 2//** 3//** ## ## ## ## ## #### #### ### ### 4//** ## ## ## ## ## ## ## ## ## ## #### #### 5//** ## ## ## ## ## ## ## ## ## ## ## ## ## ## 6//** ## ## ######## ## ## ## ## ## ## ## ### ## 7//** ### ## ## ### ## ## ## ## ## ## 8//** # ## ## # #### #### ## ## 9//** 10//** $Id: Heresiarch.vc 3794 2008-09-21 20:42:02Z dj_jl $ 11//** 12//** Copyright (C) 1999-2006 Jānis Legzdiņš 13//** 14//** This program is free software; you can redistribute it and/or 15//** modify it under the terms of the GNU General Public License 16//** as published by the Free Software Foundation; either version 2 17//** of the License, or (at your option) any later version. 18//** 19//** This program is distributed in the hope that it will be useful, 20//** but WITHOUT ANY WARRANTY; without even the implied warranty of 21//** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22//** GNU General Public License for more details. 23//** 24//************************************************************************** 25 26class Heresiarch : Actor 27 game(GAME_Hexen) 28 __mobjinfo__(10080); 29 30// 31// Sorcerer Variables 32// 33 34// Special1f Angle of ball 1 (all others relative to that) 35// SpecialCID which ball to stop at in stop mode (MT_???) 36// Args[0] Defense time 37// Args[1] Number of full rotations since stopping mode 38// Args[2] Target orbit speed for acceleration/deceleration 39// Args[3] Movement mode (see SORC_ macros) 40// Args[4] Current ball orbit speed 41 42//========================================================================== 43// 44// Died 45// 46//========================================================================== 47 48void Died(EntityEx source, EntityEx inflictor) 49{ 50 // For Heresiarch special is actually the script to be executed. 51 int Script = Special; 52 Special = 0; 53 54 ::Died(source, inflictor); 55 56 if (Script) 57 { 58 XLevel.StartACS(Script, 0, 0, 0, 0, self, NULL, 0, false, false); 59 } 60} 61 62states 63{ 64Spawn: 65 SORC A 3 66 SORC A 2 A_SorcSpinBalls 67 SORC A 10 A_Look 68 Wait 69See: 70 SORC ABCD 5 A_Chase 71 Loop 72Pain: 73 SORC G 8 74 SORC G 8 A_Pain 75 Goto See 76Missile: 77 SORC F 6 Bright A_FaceTarget 78 SORC F 6 Bright A_SpeedBalls 79 SORC F 6 Bright A_FaceTarget 80 Wait 81Attack1: 82 SORC E 6 Bright 83 SORC E 6 Bright A_SpawnFizzle 84 SORC E 5 Bright A_FaceTarget 85 Goto Attack1+1 86Attack2: 87 SORC E 2 Bright 88 SORC E 2 Bright A_SorcBossAttack 89 Goto See 90Death: 91 SORC H 5 Bright 92 SORC I 5 Bright A_FaceTarget 93 SORC J 5 Bright A_Scream 94 SORC KLMNOPQRST 5 Bright 95 SORC U 5 Bright A_NoBlocking 96 SORC VWXY 5 Bright 97 SORC Z -1 Bright 98 Stop 99} 100 101defaultproperties 102{ 103 Health = 5000; 104 Radius = 40.0; 105 Height = 110.0; 106 Mass = 500.0; 107 Speed = 16.0 * 35.0; 108 PainChance = 0.0390625; 109 MissileDamage = 9; 110 bSolid = true; 111 bShootable = true; 112 bCountKill = true; 113 bMonster = true; 114 bActivatePushWall = true; 115 bActivateMCross = true; 116 bPassMobj = true; 117 bCanUseWalls = true; 118 bFloorClip = true; 119 bNoBlood = true; 120 bBoss = true; 121 bNeverTarget = true; 122 bFullVolActive = true; 123 bNoIceDeath = true; 124 bDeflect = true; 125 SightSound = 'SorcererSight'; 126 ActiveSound = 'SorcererActive'; 127 PainSound = 'SorcererPain'; 128 DeathSound = 'SorcererDeathScream'; 129 Obituary = "$ob_heresiarch"; 130} 131