from .base import (
Scene, ChangeSceneEvent, MoveViewportEvent, WorldEvent, defer_to_update)
from ..constants import TILE_SIZE, WIDTH, HEIGHT
+from ..gamelib.items import clone_old_item
from ..roaches import build_roach
from ..vehicles.base import Vehicle
world.roaches.append(build_roach(world))
self._vehicle_changed()
+ @defer_to_update
+ def _gain_item(self, world, item):
+ if item.item_type == "serum":
+ world.serums.append(item.item_data["serum"])
+ elif item.item_type == "weapon":
+ old_weapon = world.weapons.current
+ world.weapons.current = item.item_data["weapon"]
+ if old_weapon != "spit":
+ clone = clone_old_item(item, weapon=old_weapon)
+ self._level.items.append(clone)
+ self._items.add(clone)
+ self._vehicle_changed()
+
@defer_to_update
def _change_vehicle(self, world):
vehicle = Vehicle.random()
item = self._level.item_at(x, y)
self._level.remove_item(item)
self._items.remove(item)
+ self._gain_item(item)
elif self._level.is_exit(x, y):
next_level = self._level.get_exit_level()
return [