예제 #1
0
TbBool setup_scavenger_move(struct Thing *thing, struct Room *room)
{
    if (!person_move_somewhere_adjacent_in_room(thing, room)) {
        return false;
    }
    thing->continue_state = CrSt_Scavengering;
    return true;
}
예제 #2
0
TbBool setup_prison_move(struct Thing *thing, struct Room *room)
{
    if (!person_move_somewhere_adjacent_in_room(thing, room)) {
        return false;
    }
    thing->continue_state = CrSt_CreatureInPrison;
    return true;
}
예제 #3
0
short barracking(struct Thing *creatng)
{
    struct Room *room;
    room = get_room_thing_is_on(creatng);
    if (!room_still_valid_as_type_for_thing(room, RoK_BARRACKS, creatng))
    {
        WARNLOG("Room %s owned by player %d is bad work place for %s index %d owner %d",room_code_name(room->kind),(int)room->owner,thing_model_name(creatng),(int)creatng->index,(int)creatng->owner);
        remove_creature_from_work_room(creatng);
        set_start_state(creatng);
        return CrStRet_ResetFail;
    }
    if (person_move_somewhere_adjacent_in_room(creatng, room)) {
        creatng->continue_state = CrSt_Barracking;
    }
    return CrStRet_Modified;
}