-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfat_gravity.lua
More file actions
80 lines (66 loc) · 2.39 KB
/
fat_gravity.lua
File metadata and controls
80 lines (66 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
local SS13 = require("SS13")
SS13.wait(1)
local user = SS13.get_runner_client()
function getGravGen()
local SSmachines = dm.global_vars.SSmachines
local gravgen_list = SSmachines:get_machines_by_type_and_subtypes(dm.global_procs._text2path("/obj/machinery/gravity_generator/main"))
local gravgen = nil
for i=1,#gravgen_list do
gravgen = gravgen_list[i]
if gravgen and gravgen.level
and dm.global_vars.SSmapping:level_trait(gravgen.level, dm.global_vars.ZTRAIT_STATION)
then
break
end
end
return gravgen
end
function deleteGravGen()
local generator = getGravGen()
dm.global_procs.qdel(generator)
end
function getVictim()
local players = dm.global_vars.GLOB.alive_player_list
-- Select our victim
local victim = SS13.await(SS13.global_procs, "tgui_input_list", user, "Select The Person To Become The Generator", "Fatty Selector", players)
return victim
end
function gravityToggle(state)
local SSmapping = dm.global_vars.SSmapping
local station_levels = SSmapping:levels_by_trait("Station")
local z_number = nil
-- Turning on
for i=1,#station_levels do
z_number = station_levels[i]
SSmapping.gravity_by_z_level[z_number] = state
end
local all_mobs = dm.global_vars.GLOB.mob_list
local mob_to_update
for j=1,#all_mobs do
mob_to_update = all_mobs[j]
if(SS13.istype(mob_to_update, "/mob/living")) then
mob_to_update:refresh_gravity()
if(mob_to_update.client) then
dm.global_procs.shake_camera(mob_to_update, 32, 0.5)
end
end
end
end
function turnVictimIntoGravgen()
local client = getVictim()
if(client == nil) then
dm.global_procs.to_chat(user, "<span class='notice'> Unable to get player </span>")
return
end
SS13.wait(1)
deleteGravGen()
SS13.wait(1)
gravityToggle(client.stat == 0)
SS13.register_signal(client, "mob_statchange", function(_, new_stat)
gravityToggle(new_stat == 0)
end)
-- Announcement here
local announcement_text = "Due to an unexpected anomaly, the gravity generator onboard seems to have disappeared. The replacement generator will be " .. client.name .. " until further notice."
dm.global_procs.priority_announce(announcement_text, "Nanotrasen Gravity Anomalies Division")
end
turnVictimIntoGravgen()