디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

ㅇㅇ

ㅇㅇ갤로그로 이동합니다. 2024.09.27 15:27:20
조회 134 추천 0 댓글 4

<


if not randtile_options then

    randtile_options = {

        -- Change the tile every N turns

        turns_change = 1,


        -- Which setting for tile_player_tile to use when disabling RandomTiles

        -- with toggle_random_tile(). Can set to e.g. "normal", "playermons",

        -- or a fixed mons/tile.

        disabled_setting = "normal" 


}

end



-- Begin player_tiles array

if not player_tiles then

    player_tiles = {



{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },

{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER_2",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },

{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER_3",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },

{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER_4",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },

{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER_5",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },

{ mons = "kraken simulacrum tentacle end",

            tile = "MONS_KRAKEN_SIMULACRUM_TENTACLE_WATER_6",

            weapon_offsets = "32,32",  shield_offsets = "32,32" },




    } -- end player_tiles array

end





-- Note: No further configuration past this point.


-- A list of tiles that are valid and compatible with our version.

valid_tiles = {}

rtdat = nil


-- Wrapper of crawl.mpr() that prints text in white by default.

if not mpr then

    mpr = function (msg, color)

        if not color then

            color = "white"

        end

        crawl.mpr("<" .. color .. ">" .. msg .. "</" .. color .. ">")

    end

end


-- Populate valid_tiles

function init_random_tiles(tiles)

    local version = tonumber(crawl.version("major"))


    for i,v in ipairs(player_tiles) do

        if v.mons

            and (not v.min_version or version >= tonumber(v.min_version))

        and (not v.max_version or version <= tonumber(v.max_version)) then

            valid_tiles[#valid_tiles + 1] = v

        end

    end


    -- state data

    local default_state = { index = 1 + crawl.random2(#valid_tiles),

                            last_index_change = you.turns(),

                            last_variant = -1,

                            forward_direction = true,

                            last_xl = tonumber(you.xl()),

                            enabled = true,

                            timer_enabled = true }


    if not c_persist.randomtile_state then

        c_persist.randomtile_state = {}

    end


    rtdat = c_persist.randomtile_state

    for key,val in pairs(default_state) do

        if rtdat[key] == nil then

            rtdat[key] = val

        end

    end


    if rtdat.enabled then

        enable_random_tile(true)

    else

        disable_random_tile(true)

    end

end


-- Print a message about a tile set change

function tile_change_message()

    if not randtile_options.god_message then

        return

    end


    local god = you.god()

    if god == "No God" then

        god = randtile_options.default_god

    end

    if randtile_options.god_speech[god] then

        msg_template = randtile_options.god_speech[god]

    else

        msg_template = randtile_options.god_speech["default"]

    end


    local msg = msg_template:gsub("%%g", god)

    local amons = crawl.grammar(valid_tiles[rtdat.index].mons, "A")

    local mons = valid_tiles[rtdat.index].mons

    msg = msg:gsub("%%am", amons)

    mons = mons:gsub("^[tT][hH][eE] ", "")

    mons = mons:gsub("^[aA][nN]? ", "")

    msg = msg:gsub("%%m", mons)

    mpr(msg, randtile_options.message_colour)

end


function get_terrain()

    local feat = view.feature_at(0,0)

    -- Set to "air" when flying so water and lava features under the

    -- player don't cause spurious matches.

    if you.status():find("flying") then

        feat = "air"

    end

    return feat

end


function get_percent_hp()

    local hp, mhp = you.hp()

    return hp / mhp

end


if not var_functions then

    var_functions = {

        ["percent_hp"] = get_percent_hp,

        ["status"] = you.status,

        ["terrain"] = get_terrain,

        ["xl"] = you.xl,

    }

end


-- Change the current tile using the tileset entry with the given index in

-- valid_tiles. This will update the randtile state as necessary.

function change_tile(index, force)

    local tileopt = nil

    local change_index = force or index ~= rtdat.index

    local entry = valid_tiles[index]

    local num_var = entry.num_var

    if not num_var and entry.tileset then

        num_var = table.getn(entry.tileset)

    end

    if num_var then

        local var_type = entry.var_type

        if not var_type then

            var_type = "random"

        end

        local variant = 1

        if var_type == "random" or var_type == "fixed" then

            variant = crawl.random2(num_var) + 1

            -- Iterate the sequence variant if we have valid state for it.

        elseif var_type == "sequence"

            and not change_index

            and rtdat.last_variant >= 1

        and rtdat.last_variant < num_var then

            variant = rtdat.last_variant + 1

        elseif var_type == "oscillate"

            and not change_index

            and rtdat.last_variant >= 1 then

            if rtdat.forward_direction and rtdat.last_variant == num_var then

                rtdat.forward_direction = false

            elseif not rtdat.forward_direction and rtdat.last_variant == 1 then

                rtdat.forward_direction = true

            end

            variant = rtdat.last_variant + (rtdat.forward_direction and 1 or -1)

        elseif var_functions[var_type] ~= nil then

            local comp_value = var_functions[var_type]()

            local comp_string = true

            if type(comp_value) == "number" then

                comp_string = false

            end

            for i, v in pairs(entry.tileset) do

                if i > 1

                    and (comp_string and comp_value:find(v[1])

                             or not comp_string and comp_value <= v[1]) then

                        variant = i

                        -- For string values, take the first match

                        if comp_string then

                            break

                        end

                end

            end

        end

        rtdat.last_variant = variant

        -- custom-defined tilesets or an variant set defined by crawl itself.

        if entry.tileset then

            -- For var_type values that use var_functions

            if type(entry.tileset[variant]) == "table" then

                tileopt = entry.tileset[variant][2]

            else

                tileopt = entry.tileset[variant]

            end

        elseif entry.tile then

            local var_suf

            if variant == 1 then

                var_suf = ""

            else

                var_suf = "_" .. variant - 1

            end

            tileopt = entry.tile .. var_suf

        end

        tileopt = "tile:" .. tileopt

    elseif entry.tile then

        tileopt = "tile:" .. entry.tile

    elseif entry.mons then

        tileopt = "mons:" .. entry.mons

    end


    if not tileopt then

        return

    end


    if change_index then

        rtdat.index = index

        rtdat.last_index_change = you.turns()

    end


    crawl.setopt("tile_player_tile = " .. tileopt)

    if valid_tiles[index].weapon_offsets then

        crawl.setopt("tile_weapon_offsets = "

                                     .. valid_tiles[index].weapon_offsets)

    else

        crawl.setopt("tile_weapon_offsets = reset")

    end

    if valid_tiles[index].shield_offsets then

        crawl.setopt("tile_shield_offsets = "

            .. valid_tiles[index].shield_offsets)

    else

        crawl.setopt("tile_shield_offsets = reset")

    end


    if change_index then

        tile_change_message()

    end

end


-- Change the tile by partial match of name to the mons entries in

-- valid_tiles. Reads name from input if it's not given as an argument.

function set_tile_by_name(name)

    if name == nil then

        crawl.formatted_mpr("Enter a tile name search string: ", "prompt")

        name = crawl.c_input_line()

        if not name then

            return

        end

    end

    local first_match = nil

    name = name:lower()

    for i,v in ipairs(valid_tiles) do

        local mname = v.mons:lower()

        if mname == name then

            first_match = i

            break

        elseif mname:find(name) and not first_match then

            first_match = i

        end

    end

    if first_match then

        change_tile(first_match, true)

    else

        mpr("Unable to match a player_tile mons value with " .. name, "lightred")

    end

end


-- Checks the randtile state, changing the tile when necessary. A change of the

-- tile index will cause a tile change message to be displayed. The tile may be

-- changed to a new tileset variant even if the index is unchanged, depending

-- on the definition of the current tileset. If force_change is true, the tile

-- index will always be changed.

function random_tile(force_change)

    if not valid_tiles or not rtdat.enabled then

        return

    end


    local num_tiles = #valid_tiles

    local xl_changed = tonumber(you.xl()) ~= rtdat.last_xl

    if xl_changed then

        rtdat.last_xl = tonumber(you.xl())

    end


    local turns_passed = tonumber(you.turns()) - randtile_options.turns_change

    local change_index = force_change or rtdat.timer_enabled

        and (xl_changed or turns_passed >= rtdat.last_index_change)

    local index

    if change_index then

        index = 1 + crawl.random2(num_tiles)

    else

        index = rtdat.index

    end


    local entry = valid_tiles[index]

    local var_type = "random"

    if (entry.num_var or entry.tileset) and entry.var_type then

        var_type = entry.var_type

    end

    if not change_index and var_type == "fixed" then

        return

    end


    -- We're changing the player tile because of an index change or because we

    -- are using a variant tileset that changes with every UI input.

    change_tile(index)

end


-- Force a tile change

function new_random_tile()

    random_tile(true)

end


-- Toggle the turn/xl timer to disable/enable index changing.

function toggle_tile_timer()

    if rtdat.timer_enabled then

        mpr("Disabling tile changes by turn or XL.")

    else

        mpr("Enabling tile changes by turn and XL.")

    end

    rtdat.timer_enabled = not rtdat.timer_enabled

end


function enable_random_tile(quiet)

    if not quiet then

        mpr("Enabling RandomTiles.")

    end

    rtdat.enabled = true

    -- Don't attempt to load an invalid index

    if rtdat.index == nil or rtdat.index > #valid_tiles then

        rtdat.index = 1 + crawl.random2(#valid_tiles)

    end

    change_tile(rtdat.index, true)

end


function disable_random_tile(quiet)

    rtdat.enabled = false

    crawl.setopt("tile_player_tile = " .. randtile_options.disabled_setting)

    crawl.setopt("tile_weapon_offsets = reset")

    crawl.setopt("tile_shield_offsets = reset")

    if not quiet then

        mpr("Disabling RandomTiles.")

    end

end


-- Toggle RandomTiles, setting it tile_player_tile to default setting if we're

-- disabling.

function toggle_random_tile()

    if rtdat.enabled then

        disable_random_tile()

    else

        enable_random_tile()

    end

end


-- Initialize the tileset, removing any invalid tile entries.

init_random_tiles(player_tiles)

>



{

  function ready()

random_tile()

  end

}




추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 축의금 적게 내면 눈치 줄 것 같은 스타는? 운영자 24/11/11 - -
공지 로그라이크 갤러리 이용 안내 [56] 운영자 16.04.08 84371 24
472179 엘린)정기순회 임무 질문 로갤러(121.143) 23:13 0 0
472178 엘린 시야 넓히고싶으면 고양이의눈 마법쓰면됨 로갤러(112.148) 23:11 4 0
472177 엘린 파티 해제 어떻게 함? [2] 로갤러(119.194) 23:10 10 0
472176 엘린) 아이가 원하는거 달라는데 줘두 되는 퀘스트여? [1] 로갤러(121.139) 23:09 11 1
472175 엘린) 드디어 쓸만한 용비늘장비가 하나 떴다 ㅇㅇ(59.11) 23:08 15 0
472174 조베죽 서버 복구 완료 [2] ASCIIPhilia갤로그로 이동합니다. 23:05 26 4
472173 죠베죽 문열림 kotto갤로그로 이동합니다. 23:05 4 0
472172 ㄷㅈ) 죠베죽 입갤ㄹㄹㄹ 로갤러(59.6) 23:05 5 0
472171 엘린)버섯 농사 팁 [1] 로갤러(49.174) 23:01 37 0
472170 다크갓 이분 실종 신고 해야되는거 아님? 로갤러(61.83) 22:59 9 0
472169 엘린)낚시 해야되는 이유 [5] 로갤러(49.174) 22:53 74 0
472168 ㄷㅈ) 죠베죽 운영자 어디가쒀 [1] 로갤러(58.29) 22:48 37 2
472167 엘린)이게 섹스임 로갤러(121.173) 22:39 79 0
472166 ㅋㅌㅋㅂㅂ)근데 방어구 보강하는 그거 어떻게 적용되더라 [1] ssh0818갤로그로 이동합니다. 22:19 36 0
472165 다크갓 우크라이나에서 군복무중으로 밝혀져 ㅇㅇ(118.235) 22:19 47 1
472164 엘린 혹시 플레이어 이름이나 별명(이명)은 못 바꿈? [4] 로갤러(175.114) 22:18 101 0
472163 다크갓 시발아 자기 게으른거 같다고 모더도 영입했잖아 ssh0818갤로그로 이동합니다. 22:12 57 0
472162 다크갓 현생에 문제생겼다는건 봤는데 ㅇㅇ갤로그로 이동합니다. 22:10 73 0
472161 엘린)게임이 갑자기 기괴해지는 순간이 있음 [4] ㅇㅇ갤로그로 이동합니다. 22:09 144 1
472160 로그라이크 갤러리서 열풍인데 유튜브에는 방송하는 사람없는 이유가 [10] 로갤러(125.180) 22:04 159 0
472159 와 근데 스팀가격 비싸네..이렇게 비쌀 이유가 있는 게임인가 두마리치킨값 [10] 로갤러(125.180) 22:02 156 0
472158 ㅋㅌㅋ)채집으로 초반에 먹고살기 좋은 음식 추천좀 [10] 로갤러(125.188) 22:00 64 0
472157 엘린)조사 번역 오히려 틀린게 더 많지 않나? 로갤러(220.87) 21:58 91 0
472156 여기가 로그라이크 갤러리지 엘린갤러리냐? [2] 로갤러(125.180) 21:57 102 0
472155 ㄷㅈ) 스시죽은 웹타일버전은 트렁크가 없는거임? [2] ㅇㅇ(112.169) 21:46 41 0
472154 좀비영화보니 좀비서바이벌겜 마려운데 [2] ㅇㅇ(49.170) 21:40 50 0
472153 ㅇㄹ) 아니 농사 비옥도 13인데 시발 식물이 안자라 [2] ㅇㅇ(59.13) 21:39 70 0
472152 ㄷㅈ) 주인장 문열어! ㅇㅇ(14.36) 21:36 36 0
472151 엘린) 라이트세이버 존나약하네? [18] 로갤러(122.36) 21:32 172 0
472150 이제는 말할 수 있는 엘린 번역 후기 [9] Khelerd갤로그로 이동합니다. 21:32 314 24
472149 엘린) 쁘띠 호박은 아티팩트 주제에.. [3] 으으엨갤로그로 이동합니다. 21:32 90 0
472148 유저가 개발하는 베르니스가 엘로나 베르니스구나 [2] 지켰다갤로그로 이동합니다. 21:31 70 0
472147 엘린 번역보니 참 로갤러(27.113) 21:30 67 0
472146 엘린 장비에 축복 붙이면 무슨 효과 있음? [2] ㅇㅇ갤로그로 이동합니다. 21:25 58 0
472145 망령이랑 싸우다가 마나 1되고 체력 30됬는데 이거 어케복구함..? [3] ㅇㅇ(175.112) 21:24 45 0
472144 아직 로스트랜드가 드포랑 엘린한테 진건 아니긴함 [1] ㅇㅇ갤로그로 이동합니다. 21:24 74 3
472143 메달로 뭐살지 추천좀 [7] 이터널스톰갤로그로 이동합니다. 21:23 88 0
472142 ㄷㅈ) 으으ㅏㄱ 웹죽 어디갔어 로갤러(211.105) 21:11 30 0
472141 이제 로스트랜드만 나오면 됨 [3] 도시드워프갤로그로 이동합니다. 21:10 75 0
472140 엘린 공략안보고 헤딩가능하냐? [6] ㅇㅇ갤로그로 이동합니다. 21:10 110 0
472139 엘린) 첫 영지보다 베르니스가 더 낫나? [5] 으으엨갤로그로 이동합니다. 21:09 110 0
472138 근데 엘린이거 퍼마데스 가능함? [6] ㅇㅇ갤로그로 이동합니다. 21:06 114 0
472137 엘린 한패 찐빠난거 하나 발견 [3] ㅇㅇ(121.142) 21:04 160 1
472135 엘린 자유도 높음? [5] Lasshole갤로그로 이동합니다. 20:57 131 0
472134 돌쥬크 열어줘........... 로갤러(59.30) 20:57 24 1
472133 엘린] 엥? 방금 뭔 패치 있던데 뭐지? [2] 로갤러(121.139) 20:50 95 0
472132 저희가 올린 한국어 모드는 이거 아니에요 [3] 으으엨갤로그로 이동합니다. 20:49 196 2
472131 엘린 한국어 모드가 업로드되었습니다 [13] 으으엨갤로그로 이동합니다. 20:45 449 27
472130 안돼 돌죽이 안돼..... [3] UR가루30개만주십시오갤로그로 이동합니다. 20:40 72 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2