]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/monsters
authorMario <mario@smbclan.net>
Fri, 29 Dec 2017 10:16:19 +0000 (20:16 +1000)
committerMario <mario@smbclan.net>
Fri, 29 Dec 2017 10:16:19 +0000 (20:16 +1000)
1  2 
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/notifications/all.inc

index 20e7b26a1cc993513b07b7f91ad06bf8de763986,e6eb9b03defa392e3d5fb87b03118b4eb0e76d0b..cdb3e8e6428341103abeadc96e7fa6613d360a5d
@@@ -35,7 -35,8 +35,8 @@@ void monster_dropitem(entity this, enti
                return;
  
        vector org = CENTER_OR_VIEWOFS(this);
-       entity e = new(droppedweapon); // use weapon handling to remove it on touch
+       entity e = spawn();
+       Item_SetLoot(e, true);
        e.spawnfunc_checked = true;
  
        e.monster_loot = this.monster_loot;
@@@ -48,8 -49,6 +49,6 @@@
                e.noalign = true;
                StartItem(e, e.monster_loot);
                e.gravity = 1;
-               set_movetype(e, MOVETYPE_TOSS);
-               e.reset = SUB_Remove;
                setorigin(e, org);
                e.velocity = randomvec() * 175 + '0 0 325';
                e.item_spawnshieldtime = time + 0.7;
@@@ -125,27 -124,21 +124,27 @@@ entity Monster_FindTarget(entity this
        vector my_center = CENTER_OR_VIEWOFS(this);
  
        // find the closest acceptable target to pass to
 -      IL_EACH(g_monster_targets, it.monster_attack && vdist(it.origin - this.origin, <, this.target_range),
 +      IL_EACH(g_monster_targets, it.monster_attack,
        {
 -              if(Monster_ValidTarget(this, it))
 -              {
 -                      // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in g_damage.qc)
 -                      vector targ_center = CENTER_OR_VIEWOFS(it);
 +              float trange = this.target_range;
 +              if(PHYS_INPUT_BUTTON_CROUCH(it))
 +                      trange *= 0.75; // TODO cvar this
 +              vector theirmid = (it.absmin + it.absmax) * 0.5;
 +              if(vdist(theirmid - this.origin, >, trange))
 +                      continue;
 +              if(!Monster_ValidTarget(this, it))
 +                      continue;
  
 -                      if(closest_target)
 -                      {
 -                              vector closest_target_center = CENTER_OR_VIEWOFS(closest_target);
 -                              if(vlen2(my_center - targ_center) < vlen2(my_center - closest_target_center))
 -                                      { closest_target = it; }
 -                      }
 -                      else { closest_target = it; }
 +              // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in g_damage.qc)
 +              vector targ_center = CENTER_OR_VIEWOFS(it);
 +
 +              if(closest_target)
 +              {
 +                      vector closest_target_center = CENTER_OR_VIEWOFS(closest_target);
 +                      if(vlen2(my_center - targ_center) < vlen2(my_center - closest_target_center))
 +                              { closest_target = it; }
                }
 +              else { closest_target = it; }
        });
  
        return closest_target;
@@@ -172,11 -165,6 +171,11 @@@ void monster_setupcolors(entity this
                else
                        this.colormap = 1024;
        }
 +
 +      if(this.colormap > 0)
 +              this.glowmod = colormapPaletteColor(this.colormap & 0x0F, false);
 +      else
 +              this.glowmod = '1 1 1';
  }
  
  void monster_changeteam(entity this, int newteam)
@@@ -1404,8 -1392,15 +1403,8 @@@ bool Monster_Spawn(entity this, bool ch
                set_movetype(this, MOVETYPE_FLY);
        }
  
 -      if(!(this.spawnflags & MONSTERFLAG_RESPAWNED))
 -      {
 -              if(mon.spawnflags & MONSTER_SIZE_BROKEN)
 -                      this.scale *= 1.3;
 -
 -              if(mon.spawnflags & MONSTER_SIZE_QUAKE)
 -              if(autocvar_g_monsters_quake_resize)
 -                      this.scale *= 1.3;
 -      }
 +      if((mon.spawnflags & MONSTER_SIZE_QUAKE) && autocvar_g_monsters_quake_resize && !(this.spawnflags & MONSTERFLAG_RESPAWNED))
 +              this.scale *= 1.3;
  
        setsize(this, mon.m_mins * this.scale, mon.m_maxs * this.scale);
  
index 2b79f39bb069ed090adbfb3bdc015ea5772c4156,b4c6146bb6662535e983df75a4e73962e6289636..c5d1a2e537f962b356cad86f8a877dca76e12051
      MSG_INFO_NOTIF(DEATH_SELF_GENERIC,                      N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_selfkill",      _("^BG%s^K1 died%s%s"), "")
      MSG_INFO_NOTIF(DEATH_SELF_LAVA,                         N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_lava",          _("^BG%s^K1 turned into hot slag%s%s"), _("^BG%s^K1 found a hot place%s%s"))
      MSG_INFO_NOTIF(DEATH_SELF_MON_MAGE,                     N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was exploded by a Mage%s%s"), "")
 -    MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_CLAW,            N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1's innards became outwards by a Shambler%s%s"), "")
 -    MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_SMASH,           N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was smashed by a Shambler%s%s"), "")
 -    MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_ZAP,             N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was zapped to death by a Shambler%s%s"), "")
 +    MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_CLAW,               N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1's innards became outwards by a Golem%s%s"), "")
 +    MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_SMASH,              N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was smashed by a Golem%s%s"), "")
 +    MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_ZAP,                N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was zapped to death by a Golem%s%s"), "")
      MSG_INFO_NOTIF(DEATH_SELF_MON_SPIDER,                   N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was bitten by a Spider%s%s"), "")
      MSG_INFO_NOTIF(DEATH_SELF_MON_WYVERN,                   N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 was fireballed by a Wyvern%s%s"), "")
      MSG_INFO_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP,              N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",      "notify_death",         _("^BG%s^K1 joins the Zombies%s%s"), "")
      MSG_INFO_NOTIF(QUIT_DISCONNECT,                         N_CHATCON,  1, 0, "s1", "",         "",             _("^BG%s^F3 disconnected"), "")
      MSG_INFO_NOTIF(QUIT_KICK_IDLING,                        N_CHATCON,  1, 0, "s1", "",         "",             _("^BG%s^F3 was kicked for idling"), "")
      MSG_INFO_NOTIF(QUIT_KICK_SPECTATING,                    N_CONSOLE,  0, 0, "", "",           "",             _("^F2You were kicked from the server because you are a spectator and spectators aren't allowed at the moment."), "")
+     MSG_INFO_NOTIF(QUIT_KICK_TEAMKILL,                      N_CHATCON,  1, 0, "s1", "",         "",             _("^BG%s^F3 was kicked for excessive teamkilling"), "")
      MSG_INFO_NOTIF(QUIT_SPECTATE,                           N_CONSOLE,  1, 0, "s1", "",         "",             _("^BG%s^F3 is now spectating"), "")
  
      MSG_INFO_NOTIF(RACE_ABANDONED,                          N_CONSOLE,  1, 0, "s1", "",                                                                     "",                         _("^BG%s^BG has abandoned the race"), "")
      MSG_MULTI_NOTIF(DEATH_SELF_GENERIC,                 N_ENABLE,  NULL,           INFO_DEATH_SELF_GENERIC,                CENTER_DEATH_SELF_GENERIC)
      MSG_MULTI_NOTIF(DEATH_SELF_LAVA,                    N_ENABLE,  NULL,           INFO_DEATH_SELF_LAVA,                   CENTER_DEATH_SELF_LAVA)
      MSG_MULTI_NOTIF(DEATH_SELF_MON_MAGE,                N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_MAGE,               CENTER_DEATH_SELF_MONSTER)
 -    MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_CLAW,       N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_SHAMBLER_CLAW,      CENTER_DEATH_SELF_MONSTER)
 -    MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_SMASH,      N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_SHAMBLER_SMASH,     CENTER_DEATH_SELF_MONSTER)
 -    MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_ZAP,        N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_SHAMBLER_ZAP,       CENTER_DEATH_SELF_MONSTER)
 +    MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_CLAW,          N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_GOLEM_CLAW,         CENTER_DEATH_SELF_MONSTER)
 +    MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_SMASH,         N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_GOLEM_SMASH,        CENTER_DEATH_SELF_MONSTER)
 +    MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_ZAP,           N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_GOLEM_ZAP,          CENTER_DEATH_SELF_MONSTER)
      MSG_MULTI_NOTIF(DEATH_SELF_MON_SPIDER,              N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_SPIDER,             CENTER_DEATH_SELF_MONSTER)
      MSG_MULTI_NOTIF(DEATH_SELF_MON_WYVERN,              N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_WYVERN,             CENTER_DEATH_SELF_MONSTER)
      MSG_MULTI_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP,         N_ENABLE,  NULL,           INFO_DEATH_SELF_MON_ZOMBIE_JUMP,        CENTER_DEATH_SELF_MONSTER)