Esempio n. 1
0
 public override object SelectTarget(object[] objects, Engine.World.Beings.Actions.AbstractAction action)
 {
     if (action is StackingDropAction)
     {
         return(selectDropTarget(objects));
     }
     if (action is PickUpAction)
     {
         return(selectPickUpTarget(objects));
     }
     if (action is CloseDoorAction)
     {
         return(selectCloseDoorTarget(objects));
     }
     if (action is ManageEquipmentAction)
     {
         return(selectDeequipTarget(objects));
     }
     if (action is EquipAction)
     {
         return(selectEquipTarget(objects));
     }
     if (action is StackingUseItemAction)
     {
         return(selectUseTarget(objects));
     }
     return(null);
 }
Esempio n. 2
0
        public override AbstractAction SelectAction()
        {
            Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();

            if (Rng.Random.NextFloat() < JUMP_RATE)
            {
                return(new JumpAction(Being));
            }

            if (action is AttackAction)
            {
                AttackAction attackAction = action as AttackAction;
                Being        attackee     = attackAction.Attackee;
                if (Rng.Random.NextFloat() < STEAL_RATE && attackee is IBackPackBeing)
                {
                    return(new StealAction(Being, attackee));
                }
                else
                {
                    return(attackAction);
                }
            }

            return(action);
        }
Esempio n. 3
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction && Rng.Random.NextFloat() < CAUSE_BLINDNESS_RATE)
     {
         action = new CauseBlindnessAction(getOponent());
     }
     return(action);
 }
Esempio n. 4
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction)
     {
         action = new SuckLifeAction(Being, (action as AttackAction).Attackee);
     }
     return(action);
 }
Esempio n. 5
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction && Rng.Random.NextFloat() < ILLESS_ATACK_RATE)
     {
         action = new CauseIllnessAction((action as AttackAction).Attackee);
     }
     return(action);
 }
Esempio n. 6
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction && Rng.Random.NextFloat() < CAST_DARKNESS_RATE)
     {
         action = new CastDarknessAction(Being);
     }
     return(action);
 }
Esempio n. 7
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction && Rng.Random.NextFloat() < CAUSE_AMNESIA_RATE)
     {
         Being attackee = (action as AttackAction).Attackee;
         Notify("sing", attackee);
         return(new InflictAmnesiaAction(Being, attackee));
     }
     return(action);
 }
Esempio n. 8
0
 public override AbstractAction SelectAction()
 {
     Engine.World.Beings.Actions.AbstractAction action = base.SelectAction();
     if (action is AttackAction && Rng.Random.NextFloat() < CONFUSE_RATE)
     {
         Being attackee = (action as AttackAction).Attackee;
         Notify("sing", attackee);
         return(new CauseConfusionAction(attackee));
     }
     return(action);
 }
Esempio n. 9
0
 public override object SelectTarget(object[] objects, Engine.World.Beings.Actions.AbstractAction action)
 {
     return(objects[0]);
 }
Esempio n. 10
0
        public override AbstractAction SelectAction()
        {
            Pc     pc      = (Pc)Being;
            string command = ((VhGameController)GameController.Instance).Command;

            Engine.World.Beings.Actions.AbstractAction action = null;
            //
            if (command == "wait")
            {
                action = new WaitAction(pc);
            }
            //
            else if (command == "north")
            {
                action = new MoveAction(pc, Step.NORTH);
            }
            else if (command == "south")
            {
                action = new MoveAction(pc, Step.SOUTH);
            }
            else if (command == "east")
            {
                action = new MoveAction(pc, Step.EAST);
            }
            else if (command == "west")
            {
                action = new MoveAction(pc, Step.WEST);
            }
            else if (command == "north-east")
            {
                action = new MoveAction(pc, Step.NORTH_EAST);
            }
            else if (command == "north-west")
            {
                action = new MoveAction(pc, Step.NORTH_WEST);
            }
            else if (command == "south-east")
            {
                action = new MoveAction(pc, Step.SOUTH_EAST);
            }
            else if (command == "south-west")
            {
                action = new MoveAction(pc, Step.SOUTH_WEST);
            }
            else if (command == "take-stairs")
            {
                action = new TakeStairsAction(pc);
            }
            else if (command == "close-door")
            {
                action = new CloseDoorAction(pc);
            }
            else if (command == "pick-up")
            {
                action = new VhStackingPickUpAction(pc);
            }
            else if (command == "drop")
            {
                action = new StackingDropAction(pc);
            }
            else if (command == "use")
            {
                action = new StackingUseItemAction(pc);
            }
            else if (command == "manage-equipment")
            {
                action = new ManageEquipmentAction(pc);
            }
            //
            return(action);
        }