Oba na pierwszy rzut oka złe

if (player_b_freeze[id]) jak już tu dajcie id to:
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
set_pev(id, pev_maxspeed, 1.0)tu chyba nie zamrażamy posiadacza

Po za ty, że po zmianie broni nastąpi set_speedchange(id).
Moja propozycja:
Dodać do enuma z flagami Flag_Freeze, następnie:
AddFlag(target,Flag_Freeze)
do if ma item

w public damage,
następnie task który usuwa flage po pewnym czasie.
I do set_speedchange mała zamiana:
if (HasFlag(id,Flag_Freeze))
{
set_user_maxspeed(id, 0.1)
}
else
{
set_user_maxspeed(id, base + speeds)
}Nie wiem czy da się inaczej na diablo