local SS13 = require("SS13") local yeti = SS13.new("/mob/living/basic/gorilla", SS13.get_runner_client().mob:drop_location()) yeti.name = "Yeti King" yeti.desc = "Oh fuck.." yeti.real_name = "Yeti King" yeti.color = "#48ffa8" yeti.minimum_survivable_temperature = 0 yeti.maximum_survivable_temperature = 500000000 yeti.move_resist = 500000 yeti.mob_respiration_type = 0 yeti.damage_coeff.oxygen = 0 yeti:mind_initialize() local cool_rate_per_second = 200 local gas_fill_per_second = 300 local max_gas = 100 local spewing_gases = { ["/datum/gas/healium"] = 1, ["/datum/gas/water_vapor"] = 10, } local gas_on = false SS13.register_signal(yeti, "living_life", function(source, seconds_per_tick) if source.stat ~= 0 then return end source.bodytemperature = 60 if not gas_on then return end local air = source:return_air() if not air then return end local current_turf = dm.global_procs._get_step(source, 0) local temp = air.temperature if cool_rate_per_second > 0 then air.temperature = math.max(temp - cool_rate_per_second * seconds_per_tick, 160) elseif cool_rate_per_second == -1 then air.temperature = math.max(350, temp) end for gas, rate in pairs(spewing_gases) do air:assert_gas(SS13.type(gas)) local vapor = air.gases[SS13.type(gas)] local moles = vapor[1] if moles < max_gas * rate then local new_moles = math.min(moles + gas_fill_per_second * seconds_per_tick * rate, max_gas * rate) vapor[1] = new_moles end end current_turf:air_update_turf(true, false) end) local _reverseBeartrap = SS13.new("/obj/item/reverse_bear_trap") local summon_sparks = SS13.new("/datum/action/cooldown") summon_sparks.name = "Spawn sparks" summon_sparks.button_icon = _reverseBeartrap.icon summon_sparks.button_icon_state = _reverseBeartrap.icon_state summon_sparks:Grant(yeti) dm.global_procs.qdel(_reverseBeartrap) local beartrapActivated = {} SS13.register_signal(summon_sparks, "action_trigger", function() local sparks = SS13.new("/datum/effect_system/spark_spread") sparks:set_up(5, 1, yeti) sparks:attach(yeti) sparks:start() summon_sparks:StartCooldown(50) return 1 end) local toggle_gas = SS13.new("/datum/action/cooldown") toggle_gas.name = "Toggle gas" toggle_gas.button_icon_state = "origami_on" toggle_gas:Grant(yeti) SS13.register_signal(toggle_gas, "action_trigger", function() if gas_on then gas_on = false toggle_gas.button_icon_state = "origami_on" else gas_on = true toggle_gas.button_icon_state = "origami_off" end toggle_gas:StartCooldown(10) toggle_gas:build_all_button_icons() return 1 end)