|
|
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.