+void spawn_held_nade(entity player, entity nowner, float ntime, int ntype, string pntype)
+{
+ entity n = new(nade), fn = new(fake_nade);
+
+ n.nade_type = bound(1, ntype, Nades_COUNT);
+ n.pokenade_type = pntype;
+
+ setmodel(n, MDL_PROJECTILE_NADE);
+ //setattachment(n, player, "bip01 l hand");
+ n.exteriormodeltoclient = player;
+ n.customizeentityforclient = nade_customize;
+ n.traileffectnum = _particleeffectnum(Nade_TrailEffect(Nades_from(n.nade_type).m_projectile[false], player.team).eent_eff_name);
+ n.colormod = Nades_from(n.nade_type).m_color;
+ n.realowner = nowner;
+ n.colormap = player.colormap;
+ n.glowmod = player.glowmod;
+ n.wait = time + max(0, ntime);
+ n.nade_time_primed = time;
+ n.think = nade_beep;
+ n.nextthink = max(n.wait - 3, time);
+ n.projectiledeathtype = DEATH_NADE.m_id;
+
+ setmodel(fn, MDL_NADE_VIEW);
+ .entity weaponentity = weaponentities[0]; // TODO: unhardcode
+ setattachment(fn, player.(weaponentity), "");
+ fn.realowner = fn.owner = player;
+ fn.colormod = Nades_from(n.nade_type).m_color;
+ fn.colormap = player.colormap;
+ fn.glowmod = player.glowmod;
+ fn.think = SUB_Remove_self;
+ fn.nextthink = n.wait;
+
+ player.nade = n;
+ player.fake_nade = fn;
+}
+