|
|
1.1 ! root 1: ! 2: void() monster_ogre = {remove(self);}; ! 3: void() monster_demon1 = {remove(self);}; ! 4: void() monster_shambler = {remove(self);}; ! 5: void() monster_knight = {remove(self);}; ! 6: void() monster_army = {remove(self);}; ! 7: void() monster_wizard = {remove(self);}; ! 8: void() monster_dog = {remove(self);}; ! 9: void() monster_zombie = {remove(self);}; ! 10: void() monster_boss = {remove(self);}; ! 11: void() monster_tarbaby = {remove(self);}; ! 12: void() monster_hell_knight = {remove(self);}; ! 13: void() monster_fish = {remove(self);}; ! 14: void() monster_shalrath = {remove(self);}; ! 15: void() monster_enforcer = {remove(self);}; ! 16: void() monster_oldone = {remove(self);}; ! 17: void() event_lightning = {remove(self);}; ! 18: ! 19: /* ! 20: ============================================================================== ! 21: ! 22: MOVETARGET CODE ! 23: ! 24: The angle of the movetarget effects standing and bowing direction, but has no effect on movement, which allways heads to the next target. ! 25: ! 26: targetname ! 27: must be present. The name of this movetarget. ! 28: ! 29: target ! 30: the next spot to move to. If not present, stop here for good. ! 31: ! 32: pausetime ! 33: The number of seconds to spend standing or bowing for path_stand or path_bow ! 34: ! 35: ============================================================================== ! 36: */ ! 37: ! 38: /* ! 39: ============= ! 40: t_movetarget ! 41: ! 42: Something has bumped into a movetarget. If it is a monster ! 43: moving towards it, change the next destination and continue. ! 44: ============== ! 45: */ ! 46: void() t_movetarget = ! 47: { ! 48: local entity temp; ! 49: ! 50: if (other.movetarget != self) ! 51: return; ! 52: ! 53: if (other.enemy) ! 54: return; // fighting, not following a path ! 55: ! 56: temp = self; ! 57: self = other; ! 58: other = temp; ! 59: ! 60: if (self.classname == "monster_ogre") ! 61: sound (self, CHAN_VOICE, "ogre/ogdrag.wav", 1, ATTN_IDLE);// play chainsaw drag sound ! 62: ! 63: //dprint ("t_movetarget\n"); ! 64: self.goalentity = self.movetarget = find (world, targetname, other.target); ! 65: self.ideal_yaw = vectoyaw(self.goalentity.origin - self.origin); ! 66: if (!self.movetarget) ! 67: { ! 68: self.pausetime = time + 999999; ! 69: self.th_stand (); ! 70: return; ! 71: } ! 72: }; ! 73: ! 74: ! 75: ! 76: void() movetarget_f = ! 77: { ! 78: if (!self.targetname) ! 79: objerror ("monster_movetarget: no targetname"); ! 80: ! 81: self.solid = SOLID_TRIGGER; ! 82: self.touch = t_movetarget; ! 83: setsize (self, '-8 -8 -8', '8 8 8'); ! 84: ! 85: }; ! 86: ! 87: /*QUAKED path_corner (0.5 0.3 0) (-8 -8 -8) (8 8 8) ! 88: Monsters will continue walking towards the next target corner. ! 89: */ ! 90: void() path_corner = ! 91: { ! 92: movetarget_f (); ! 93: }; ! 94: ! 95: ! 96: ! 97: //============================================================================
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.