function wshockew_gotHit() /* entry=245 class_id=0x044E slot=0x06 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    vel, /* [BP+0Ch] type=0x69 */
    item, /* [BP-02h] type=0x24 */
    n, /* [BP-04h] type=0x24 */
    x, /* [BP-06h] type=0x69 */
    y, /* [BP-08h] type=0x69 */
    y1, /* [BP-0Ah] type=0x69 */
    z, /* [BP-0Ch] type=0x69 */
    z1, /* [BP-0Eh] type=0x69 */
    shocker, /* [BP-10h] type=0x24 */
    a, /* [BP-12h] type=0x69 */
    b, /* [BP-14h] type=0x69 */
    c, /* [BP-16h] type=0x69 */
    d, /* [BP-18h] type=0x69 */
    e, /* [BP-1Ah] type=0x69 */
    shockCount; /* [BP-1Ch] type=0x69 */

  entry:
    set_info(0x020C, *(arg_06));
    process_exclude();
    item = ref;
    if Item.isNpc(item) goto block_036A;

  block_01B2:
    n = item;

  block_01B9:
    if (Item.overlaps(ref, arg_06) != 1) goto block_0344;

  block_01CD:
    x = Intrinsic0013(arg_06);
    y = Item.getNpcNum(arg_06);
    y1 = Item.legal_create(arg_06);
    z = Item.AvatarStoleSomehting(item);
    z1 = Item.getZ(item);
    a = (y1 - y);
    a = (a * 2);
    b = (z - z1);
    b = ((b / 2) * 3);
    class_0A0C_slot_20(2);
    c = (retval + 1);

  block_0250:
    if (c != 0) goto block_031B;

  block_025B:
    class_0A0C_slot_20(a);
    d = retval;
    d = (y1 - d);
    y = d;
    class_0A0C_slot_20(b);
    e = retval;
    e = (e + z1);
    z = e;
    if Item.getQLo(0, 0x045A, shocker) goto block_02E0;

  block_02AF:
    c = 1;
    shockCount = (1 + shockCount);

  block_02E0:
    class_0A0C_slot_20(pid, 30);
    spawn class_0A0C_slot_32(retval, 0x00000000);
    suspend;
    c = (c - 1);
    goto block_0250;

  block_031B:
    spawn class_0A0C_slot_32(pid, 60, 0x00000000);
    suspend;
    goto block_01B9;

  block_0344:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;

  block_036A:
    return;

}
