디시인사이드 갤러리

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

갤러리 본문 영역

ㅇㅇ

ㅇㅇ갤로그로 이동합니다. 2024.09.27 15:27:20
조회 135 추천 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 - -
472447 엘린)돌 부스러기는 어디서 구함? [2] 소과금갤로그로 이동합니다. 11.16 66 0
472446 ㄷㅈ) 신마법 컨셉 맘에 든다 ㅇㅇ(223.39) 11.16 72 0
472445 엘린) 아 텐트 이건 인벤으로 쓰는거였음?? [7] ㅇㅇ(59.13) 11.16 142 0
472444 엘린) Tent of Holding 완성 [1] 으으엨갤로그로 이동합니다. 11.16 128 0
472443 엘린) 동료한테 돈 줘서 트레이닝 청진기 테스트 결과 [1] ㅇㅇ갤로그로 이동합니다. 11.16 132 0
472442 엘린) 큐브새끼진짜역겹다 [1] ㅇㅇ(59.11) 11.16 82 0
472441 엘린) 베르나 더럽게 세네.. 으으엨갤로그로 이동합니다. 11.16 78 0
472440 ㅇㄹ) 스탯 생각하면 결국 신 안믿는게 이득아님? [17] 로갤러(211.234) 11.16 196 0
472438 ㅇㄹ)아 시발새기들 쓰레기통 만들어줬잖아 [5] ㅇㅇ(59.13) 11.16 148 1
472437 엘린) 징벌용 철구 무게 가면 갈수록 오르네 [5] 으으엨갤로그로 이동합니다. 11.16 135 0
472436 엘린)곧있으면 아다만티움 풀셋 맞춰줄수있어... [6] 로갤러(122.36) 11.16 133 0
472435 엘) 에테르병 동료는 안걸림? [4] 로갤러(61.76) 11.16 98 0
472433 엘린이 뭔겜임 [8] 환월갤로그로 이동합니다. 11.16 147 0
472432 돌죽)포지크래프트는 게임내적으로 어떤 포지션인거지. [2] 와그너스갤로그로 이동합니다. 11.16 85 0
472431 엘린 각 스텟들 영향 어떻게 미치는거임? / 에테르 질병은 축복임! [10] 로갤러(27.113) 11.16 151 0
472430 ㄷㅈ) 산드워프 신직업 올룬클 소감 [14] ㅇㅇ(58.125) 11.16 315 8
472429 엘린) 난 왜 딴따라 잘 안오르는거 같냐 [14] ㅇㅇ(59.13) 11.16 121 0
472427 엘린)교회수녀가 잠든 노인한테 기차놀이 하고있어... [2] ssh0818갤로그로 이동합니다. 11.16 114 0
472426 교회 어린이 잘때 덮치는 서큐버스 수녀...png [3] Khelerd갤로그로 이동합니다. 11.16 171 1
472425 엘린 쥬어 구더기 예를스가 답이다! 로갤러(27.113) 11.16 60 0
472423 ㄷㅈ)미노광 트로그 버리면 남는게 뭐있음>? [6] 로갤러(218.209) 11.16 68 0
472422 엘린)조악하게 공?중화장실 만들었다 [2] 고라파덕갤로그로 이동합니다. 11.16 157 2
472421 파토스) 억까 개도랐노? [4] ㅇㅇ(218.148) 11.16 68 0
472420 엘린) 거점에 주민, 가축, 메이드는 뭔 차이임? [5] 로갤러(222.237) 11.16 130 0
472419 룰위신상 타천사의 피는 어따쓰는템임 [2] 로갤러(61.76) 11.16 73 0
472418 엘린)동료한테 돈 줘서 트레이닝하는 거 로갤러(220.87) 11.16 71 0
472417 엘린)농구 1024배가 끝인듯 [3] 로갤러(124.28) 11.16 151 1
472416 ㄷㅈ) 로열젤리 반마법 무기로 패면 소환 안하나?? [6] 로갤러(218.209) 11.16 74 0
472415 엘린) 다음에 갈아탈 신 추천받음 [8] 으으엨갤로그로 이동합니다. 11.16 153 0
472413 ㅇㄹ) UI 설정 재미있네 로갤러(123.109) 11.16 91 0
472412 엘린) 무기 무게 10s 이상이면 이도류 무리던가 [6] 으으엨갤로그로 이동합니다. 11.16 126 0
472411 엘린) 길드 중복 가입 가능함? [3] 로갤러(220.125) 11.16 82 0
472410 ㅇㄹ)딴따라 노가다 연주 몇까지 올려야함?? [2] ㅇㅇ(59.13) 11.16 75 0
472409 엘린)딴따라 레벨 보통 몇까지 올림? [2] 로갤러(222.237) 11.16 76 0
472408 엘린) 대리석 많이 얻을방법은 마을부수기밖에 없나 [2] ㅇㅇ(59.11) 11.16 63 0
472407 ㄷㅈ)필중인지 아닌지는 어떻게 확인함? [3] ㅇㅇ갤로그로 이동합니다. 11.16 52 1
472406 엘린 vs 이세계 창조자 뭐가 재밌음? [5] ㅇㅇ(117.111) 11.16 133 0
472405 ㄷㅈ)미노타 데스폼 먹으면 걍 샤원 안믿고 딴거가?? [1] 로갤러(218.209) 11.16 37 0
472404 엘린다 좋은데 쫌 아쉬운거 [2] 로갤러(211.234) 11.16 113 1
472403 엘린)이국의 동화, 은화는 어디서 바꿔먹음? [1] ㅇㅇ갤로그로 이동합니다. 11.16 95 0
472402 엘린을 플레이할 땐 꼭 반신으로 하십시오 로갤러(211.203) 11.16 114 0
472401 좋은 직업-종족 모있슴? [19] 미나미모토갤로그로 이동합니다. 11.16 211 0
472400 이거 뭐하는겜임 [3] 미나미모토갤로그로 이동합니다. 11.16 155 0
472399 엘린) 미식가 찍었는데 이거 왜 안보임? [5] 로갤러(27.113) 11.16 140 0
472398 추억의 갤러리 순회열차입니다@@@@ [4] 남고생A갤로그로 이동합니다. 11.16 74 0
472396 엘린 근력스텟은 어떤 동작으로 올라감? [5] ㅇㅇ갤로그로 이동합니다. 11.16 109 0
472395 엘린) 우횻wwww신님쨩 다키마쿠라 겟또다제 [5] 코사크갤로그로 이동합니다. 11.16 174 1
472393 엘린)이겜 은근 화염내성있는애들 별로없는거같네 ㅇㅇ갤로그로 이동합니다. 11.16 87 0
472392 Forgecraft 간단 사용기 [10] ASCIIPhilia갤로그로 이동합니다. 11.16 517 11
472391 엘린) 이거 낫으로 수확은 채집 스킬잇어야 됨? [2] 로갤러(125.130) 11.16 92 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2