void Step(NPC npc, int st) { int side; if (st == -1) side = r.Next(3); else side = st; int oldx = npc.getX(); int oldy = npc.getY(); int x = 0, y = 0; if (!((oldx == 0 && side == 0) || (oldx == MZ && side == 2) || (oldy == 0 && side == 1) || (oldy == MZ && side == 3))) { switch (side) { case 0: { x = oldx - 1; y = oldy; } break; case 3: { x = oldx; y = oldy + 1; } break; case 2: { x = oldx + 1; y = oldy; } break; case 1: { x = oldx; y = oldy - 1; } break; } if (maze[x,y] == 0) { npc.setPosition(x, y); maze[oldx,oldy] = 0; maze[x,y] = 2; } else if (maze[x,y] == 3 || maze[x,y] == 4) { for (int i = 0; i < subj.Count; i++) if (subj[i].getX() == x && subj[i].getY() == y) { if (subj[i].getAmount() == 12) npc.upAmmo(subj[i].getAmount()); else npc.heal(subj[i].getAmount()); break; } npc.setPosition(x, y); maze[oldx,oldy] = 0; maze[x,y] = 2; } Combat(npc); } }
void RaiseSubject(NPC npc, subject sub)//! { if (sub.getAmount() == 12) npc.upAmmo(sub.getAmount()); else npc.heal(sub.getAmount()); subj.Remove(sub); }