123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- void() monster_use =
- {
- if (self.enemy)
- return;
- if (self.health <= 0)
- return;
- if (activator.items & IT_INVISIBILITY)
- return;
- if (activator.flags & FL_NOTARGET)
- return;
- if (activator.classname != "player")
- return;
-
-
- self.enemy = activator;
- self.nextthink = time + 0.1;
- self.think = FoundTarget;
- };
- void() monster_death_use =
- {
-
- if (self.flags & FL_FLY)
- self.flags = self.flags - FL_FLY;
-
- if (self.flags & FL_SWIM)
- self.flags = self.flags - FL_SWIM;
- if (!self.target)
- return;
- activator = self.enemy;
- SUB_UseTargets ();
- };
- void() walkmonster_start_go =
- {
- self.origin_z = self.origin_z + 1;
- droptofloor();
-
- if (!walkmove(0,0))
- {
- dprint ("walkmonster in wall at: ");
- dprint (vtos(self.origin));
- dprint ("\n");
- }
-
- self.takedamage = DAMAGE_AIM;
- self.ideal_yaw = self.angles * '0 1 0';
- if (!self.yaw_speed)
- self.yaw_speed = 20;
- self.view_ofs = '0 0 25';
- self.use = monster_use;
- self.team = TEAM_MONSTERS;
- self.flags = self.flags | FL_MONSTER;
-
- if (self.target != string_null)
- {
- self.goalentity = self.movetarget = find(world, targetname, self.target);
- self.ideal_yaw = vectoyaw(self.goalentity.origin - self.origin);
- if (!self.movetarget)
- {
- dprint ("Monster can't find target at ");
- dprint (vtos(self.origin));
- dprint ("\n");
- }
-
- if (self.movetarget.classname == "path_corner")
- self.th_walk ();
- else
- self.pausetime = 99999999;
- self.th_stand ();
- }
- else
- {
- self.pausetime = 99999999;
- self.th_stand ();
- }
-
- self.nextthink = self.nextthink + random()*0.5;
- };
- void() walkmonster_start =
- {
-
-
- self.nextthink = self.nextthink + random()*0.5;
- self.think = walkmonster_start_go;
- total_monsters = total_monsters + 1;
- };
- void() flymonster_start_go =
- {
- self.takedamage = DAMAGE_AIM;
- self.ideal_yaw = self.angles * '0 1 0';
- if (!self.yaw_speed)
- self.yaw_speed = 10;
- self.view_ofs = '0 0 25';
- self.use = monster_use;
- self.team = TEAM_MONSTERS;
- self.flags = self.flags | FL_FLY;
- self.flags = self.flags | FL_MONSTER;
- if (!walkmove(0,0))
- {
- dprint ("flymonster in wall at: ");
- dprint (vtos(self.origin));
- dprint ("\n");
- }
- if (self.target != string_null)
- {
- self.goalentity = self.movetarget = find(world, targetname, self.target);
- if (!self.movetarget)
- {
- dprint ("Monster can't find target at ");
- dprint (vtos(self.origin));
- dprint ("\n");
- }
-
- if (self.movetarget.classname == "path_corner")
- self.th_walk ();
- else
- self.pausetime = 99999999;
- self.th_stand ();
- }
- else
- {
- self.pausetime = 99999999;
- self.th_stand ();
- }
- };
- void() flymonster_start =
- {
-
- self.nextthink = self.nextthink + random()*0.5;
- self.think = flymonster_start_go;
- total_monsters = total_monsters + 1;
- };
- void() swimmonster_start_go =
- {
- if (deathmatch)
- {
- remove(self);
- return;
- }
- self.takedamage = DAMAGE_AIM;
- self.ideal_yaw = self.angles * '0 1 0';
- if (!self.yaw_speed)
- self.yaw_speed = 10;
- self.view_ofs = '0 0 10';
- self.use = monster_use;
- self.team = TEAM_MONSTERS;
- self.flags = self.flags | FL_SWIM;
- self.flags = self.flags | FL_MONSTER;
- if (self.target != string_null)
- {
- self.goalentity = self.movetarget = find(world, targetname, self.target);
- if (!self.movetarget)
- {
- dprint ("Monster can't find target at ");
- dprint (vtos(self.origin));
- dprint ("\n");
- }
-
- self.ideal_yaw = vectoyaw(self.goalentity.origin - self.origin);
- self.th_walk ();
- }
- else
- {
- self.pausetime = 99999999;
- self.th_stand ();
- }
-
- self.nextthink = self.nextthink + random()*0.5;
- };
- void() swimmonster_start =
- {
-
- self.nextthink = self.nextthink + random() * 0.5;
- self.think = swimmonster_start_go;
- total_monsters = total_monsters + 1;
- };
|