Initial commit
This commit is contained in:
405
devtools/create_ultima/files/ultima6/scripts/md/look.lua
Normal file
405
devtools/create_ultima/files/ultima6/scripts/md/look.lua
Normal file
@@ -0,0 +1,405 @@
|
||||
function look_pocketwatch(obj)
|
||||
printl("THE_TIME_IS")
|
||||
local am = true
|
||||
local hour = clock_get_hour()
|
||||
local minute = clock_get_minute()
|
||||
if hour >= 12 then
|
||||
am = false
|
||||
end
|
||||
if hour > 12 then
|
||||
hour = hour - 12
|
||||
end
|
||||
local time = "TIME_AM"
|
||||
if am == false then
|
||||
time = "TIME_PM"
|
||||
end
|
||||
|
||||
printfl(time, hour, minute)
|
||||
end
|
||||
|
||||
function look_cannon(obj)
|
||||
if obj.quality ~= 0 then
|
||||
printl("THE_CANNON_WILL_FIRE_STEEL_CANNON_BALLS")
|
||||
end
|
||||
end
|
||||
|
||||
function look_barrow(obj)
|
||||
if obj.qty == 0 then
|
||||
printl("IT_IS_EMPTY")
|
||||
return
|
||||
end
|
||||
|
||||
local quality = obj.quality
|
||||
local material
|
||||
if quality == 1 then
|
||||
material = i18n("DIRT")
|
||||
elseif quality == 2 then
|
||||
material = i18n("ROCK")
|
||||
elseif quality == 3 then
|
||||
material = i18n("IRON_ORE")
|
||||
elseif quality == 4 then
|
||||
material = i18n("COAL")
|
||||
end
|
||||
|
||||
if obj.qty == 1 then
|
||||
printfl("IT_HAS_1_LOAD_OF", material)
|
||||
else
|
||||
printfl("IT_HAS_N_LOADS_OF", obj.qty, material)
|
||||
end
|
||||
end
|
||||
|
||||
function get_lat_long_string(x, y)
|
||||
local lat_str = "N"
|
||||
local long_str = "W"
|
||||
|
||||
local lat = math.modf(((y - 512) * 240) / 1024)
|
||||
local long = math.modf(((x - 512) * 360) / 1024)
|
||||
|
||||
if lat > 0 then
|
||||
lat_str = "S"
|
||||
else
|
||||
if lat == 0 then
|
||||
lat_str = " "
|
||||
end
|
||||
end
|
||||
|
||||
if long == 180 or long == -180 or long == 0 then
|
||||
long_str = " "
|
||||
else
|
||||
if long < 0 then
|
||||
long_str = "E"
|
||||
end
|
||||
end
|
||||
|
||||
lat = math.abs(lat)
|
||||
long = 180 - math.abs(long)
|
||||
|
||||
return lat..lat_str.." "..long..long_str
|
||||
end
|
||||
|
||||
function look_marker_flag(obj)
|
||||
local names = {
|
||||
[1]="Coprates Chasma",
|
||||
[2]="Arsia Mons",
|
||||
[3]="Pavonis Mons",
|
||||
[4]="Ascraeus Mons",
|
||||
[5]="Alber Tholus",
|
||||
[6]="Elysium Mons",
|
||||
[7]="Hecates Tholus",
|
||||
[8]="Terra Sirenum",
|
||||
[9]="Noctis Labyrinthus",
|
||||
[10]="Deuteronicus Mensae",
|
||||
[11]="Syrtis Major Planum",
|
||||
[12]="Olympus Mons",
|
||||
}
|
||||
|
||||
if obj.z == 0 then
|
||||
if obj.quality <= 12 then
|
||||
if obj.quality ~= 0 then
|
||||
print(names[obj.quality])
|
||||
print(" "..get_lat_long_string(obj.x,obj.y).."\n")
|
||||
end
|
||||
else
|
||||
printl("AARGH")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function look_broken_strap(obj)
|
||||
local spector = Actor.get(2)
|
||||
Actor.set_talk_flag(spector, 6)
|
||||
Actor.talk(spector)
|
||||
end
|
||||
|
||||
function look_metal_woman(obj)
|
||||
if obj.quality ~= 0 then
|
||||
printl("IT_HAS_A_HEARTSTONE")
|
||||
end
|
||||
end
|
||||
|
||||
function look_covered_martian_seed(obj)
|
||||
if obj.frame_n < 4 then
|
||||
local quality = obj.quality
|
||||
if quality == 15 then
|
||||
printl("IT_IS_GROWING")
|
||||
elseif quality == 16 then
|
||||
printl("IT_IS_RIPE")
|
||||
else
|
||||
printl("IT_IS_NOT_GROWING")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function look_sprayer_system(obj)
|
||||
local quality = obj.quality
|
||||
|
||||
if bit32.btest(quality, 1) then
|
||||
local actor = Actor.get(0x3e)
|
||||
if Actor.get_talk_flag(actor, 5) == true then
|
||||
if bit32.btest(quality, 2) then
|
||||
printl("IT_IS_READY_TO_USE")
|
||||
else
|
||||
printl("THE_RUBBER_IN_THE_SPRAYER_SYSTEM_IS_NOT_FLESH_COLORED")
|
||||
end
|
||||
else
|
||||
printl("IT_IS_READY_TO_USE")
|
||||
end
|
||||
else
|
||||
printl("THERE_IS_NO_RUBBER_IN_THE_SPRAYER_SYSTEM")
|
||||
if Actor.get_talk_flag(actor, 5) == true and bit32.btest(quality, 2) == false then
|
||||
printl("IT_IS_ALSO_NOT_FLESH_COLORED")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function look_cabinet(obj)
|
||||
local quality = obj.quality
|
||||
if quality == 0 or quality > 7 then
|
||||
printl("YOU_CANNOT_DECIPHER_WHAT_IT_CONTROLS")
|
||||
else
|
||||
printl("CABINET_"..quality)
|
||||
end
|
||||
end
|
||||
|
||||
function look_tracking_motor(obj)
|
||||
local quality = obj.quality
|
||||
|
||||
if bit32.btest(quality, 1) and obj.on_map == true then
|
||||
printl("IT_APPEARS_TO_BE_LOOSE")
|
||||
end
|
||||
|
||||
if bit32.btest(quality, 2) then
|
||||
printl("IT_APPEARS_TO_BE_BROKEN")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function look_panel(obj)
|
||||
local qty = obj.qty
|
||||
if qty == 0 then
|
||||
local frame_n = obj.frame_n
|
||||
if frame_n == 0 then
|
||||
printl("THESE_APPEAR_TO_BE_MECHANICAL_CONTROLS")
|
||||
elseif frame_n == 1 then
|
||||
printl("THESE_APPEAR_TO_BE_VALVE_CONTROLS")
|
||||
elseif frame_n == 2 then
|
||||
printl("THESE_APPEAR_TO_BE_ELECTRICAL_CONTROLS")
|
||||
end
|
||||
elseif qty == 4 then
|
||||
printl("IT_APPEARS_TO_CONTROL_A_DREAM_MACHINE")
|
||||
elseif qty == 5 then
|
||||
printl("IT_APPEARS_TO_CONTROL_A_SPRAY_SYSTEM")
|
||||
elseif qty == 6 then
|
||||
printl("IT_APPEARS_TO_CONTROL_THE_RUBY_LENS_SYSTEM")
|
||||
elseif qty == 7 then
|
||||
printl("IT_APPEARS_TO_CONTROL_THE_CISTERN_VALVES")
|
||||
else
|
||||
printl("YOU_CANNOT_DECIPHER_ITS_PURPOSE")
|
||||
end
|
||||
|
||||
local quality = obj.quality
|
||||
if bit32.btest(quality, 1) and obj.on_map == true then
|
||||
printl("THE_PANEL_IS_LOOSE")
|
||||
end
|
||||
|
||||
if bit32.btest(quality, 2) then
|
||||
printl("THE_PANEL_IS_BROKEN")
|
||||
end
|
||||
end
|
||||
|
||||
function print_number_of_charges(qty)
|
||||
if qty == 1 then
|
||||
printl("AND_HAS_1_CHARGE_LEFT")
|
||||
else
|
||||
printfl("AND_HAS_N_CHARGES_LEFT", qty)
|
||||
end
|
||||
end
|
||||
|
||||
function look_portable_sprayer(obj)
|
||||
local contents
|
||||
if obj.quality == 0 then
|
||||
contents = tile_get_description(649)
|
||||
else
|
||||
contents = tile_get_description(640)
|
||||
end
|
||||
|
||||
printfl("IT_IS_LOADED_WITH", contents)
|
||||
print_number_of_charges(obj.qty)
|
||||
end
|
||||
|
||||
function get_weapon_mode_string(obj)
|
||||
local mode
|
||||
local quality = obj.quality
|
||||
if quality == 0 then
|
||||
mode = i18n("COMBINATION")
|
||||
elseif quality == 1 then
|
||||
mode = i18n("RIFLE")
|
||||
else
|
||||
mode = i18n("SHOTGUN")
|
||||
end
|
||||
|
||||
return mode
|
||||
end
|
||||
|
||||
function look_ray_gun(obj)
|
||||
printfl("IT_IS_SET_TO", get_weapon_mode_string(obj))
|
||||
print_number_of_charges(obj.qty)
|
||||
end
|
||||
|
||||
function look_belgian_combine(obj)
|
||||
printfl("IT_IS_SET_TO", get_weapon_mode_string(obj))
|
||||
print(".\n")
|
||||
end
|
||||
|
||||
function look_switch_bar(obj)
|
||||
local quality = obj.quality
|
||||
if quality == 1 then
|
||||
printl("IT_SEEMS_TO_BE_LOOSE")
|
||||
elseif quality == 2 then
|
||||
printl("IT_IS_NOT_INSTALLED")
|
||||
end
|
||||
end
|
||||
|
||||
function look_light_source(obj)
|
||||
local obj_n = obj.obj_n
|
||||
local qty = obj.qty
|
||||
local quality = obj.quality
|
||||
|
||||
if (obj_n == 109 or obj_n == 110) and qty > 1 then
|
||||
return
|
||||
end
|
||||
|
||||
if quality > 30 then
|
||||
printl("PLENTY_OF")
|
||||
elseif quality > 6 and quality <= 30 then
|
||||
printfl("IT_HAS_N_MORE_MINUTES_OF", quality)
|
||||
elseif quality > 0 and quality <= 6 then
|
||||
printl("ITS_ALMOST_OUT_OF")
|
||||
elseif obj_n == 115 or obj_n == 117 or obj_n == 116 or obj_n == 118 then
|
||||
printl("NO")
|
||||
else
|
||||
printl("PLENTY_OF")
|
||||
end
|
||||
|
||||
if obj_n == 115 or obj_n == 117 or obj_n == 116 or obj_n == 118 then
|
||||
printl("FUEL")
|
||||
else
|
||||
printl("WICK")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function look_door(obj)
|
||||
local quality = obj.quality
|
||||
if quality >= 128 then
|
||||
quality = quality - 128
|
||||
if quality >= 64 then
|
||||
printl("IT_IS_APPARENTLY_RUSTED_SHUT")
|
||||
else
|
||||
printl("IT_IS_APPARENTLY_LOCKED")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function look_obelisk(obj)
|
||||
if obj.quality == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local ui_style = game_get_ui_style()
|
||||
|
||||
canvas_show()
|
||||
canvas_hide_all_sprites()
|
||||
canvas_set_opacity(0xff);
|
||||
canvas_set_update_interval(25)
|
||||
canvas_rotate_game_palette(true)
|
||||
|
||||
local obelisk = sprite_new(nil, 184, 0, true)
|
||||
|
||||
local text_sprite
|
||||
--local text_sprite_bg
|
||||
|
||||
if ui_style == UI_STYLE_ORIG then
|
||||
canvas_set_solid_bg(false)
|
||||
else
|
||||
text_sprite = sprite_new(nil, 8, 164, true)
|
||||
text_sprite.text_align = 2
|
||||
text_sprite.text_color = 15
|
||||
text_sprite.text = "Obelisk."
|
||||
obelisk.x = 96
|
||||
obelisk.y = 41
|
||||
end
|
||||
|
||||
obelisk.image = image_load("mdream.lzc", obj.quality-1)
|
||||
|
||||
local input = nil
|
||||
while input == nil do
|
||||
canvas_update()
|
||||
input = input_poll()
|
||||
if input ~= nil then
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
canvas_set_solid_bg(true)
|
||||
canvas_rotate_game_palette(false)
|
||||
canvas_hide()
|
||||
end
|
||||
|
||||
local look_usecode = {
|
||||
[45]=look_belgian_combine,
|
||||
[91]=look_pocketwatch,
|
||||
[98]=look_pocketwatch,
|
||||
[109]=look_light_source, -- OBJ_TORCH
|
||||
[110]=look_light_source, -- OBJ_LIT_TORCH
|
||||
[111]=look_light_source, -- OBJ_CANDLESTICK
|
||||
[112]=look_light_source, -- OBJ_LIT_CANDLE
|
||||
[113]=look_light_source, -- OBJ_CANDELABRA
|
||||
[114]=look_light_source, -- OBJ_LIT_CANDELABRA
|
||||
[115]=look_light_source, -- OBJ_OIL_LAMP
|
||||
[116]=look_light_source, -- OBJ_LIT_OIL_LAMP
|
||||
[117]=look_light_source, -- OBJ_LANTERN
|
||||
[118]=look_light_source, -- OBJ_LIT_LANTERN
|
||||
[129]=look_portable_sprayer, --OBJ_WEED_SPRAYER
|
||||
[172]=look_marker_flag,
|
||||
[179]=look_door, --OBJ_CLOSED_DOOR
|
||||
[227]=look_door, --OBJ_DOOR3
|
||||
[240]=look_ray_gun, --OBJ_HEAT_RAY_GUN
|
||||
[241]=look_ray_gun, --OBJ_FREEZE_RAY_GUN
|
||||
[251]=look_covered_martian_seed,
|
||||
[261]=look_portable_sprayer, --OBJ_SPRAY_GUN
|
||||
[268]=look_barrow, --OBJ_MARTIAN_WHEEL_BARROW
|
||||
[276]=look_sprayer_system,
|
||||
[287]=look_metal_woman,
|
||||
[292]=look_obelisk,
|
||||
[314]=look_tracking_motor,
|
||||
[333]=look_cannon,
|
||||
[410]=look_barrow, --OBJ_RAIL_CAR
|
||||
[411]=look_switch_bar,
|
||||
[457]=look_cabinet,
|
||||
[458]=look_panel,
|
||||
[460]=look_broken_strap,
|
||||
}
|
||||
|
||||
function look_obj(obj)
|
||||
printfl("YOU_SEE", obj.look_string);
|
||||
|
||||
--FIXME usecode look description should be lua code.
|
||||
if usecode_look(obj) then
|
||||
print("\n")
|
||||
return false
|
||||
end
|
||||
|
||||
print(".\n\n");
|
||||
|
||||
if look_usecode[obj.obj_n] ~= nil then
|
||||
look_usecode[obj.obj_n](obj)
|
||||
print("\n")
|
||||
end
|
||||
|
||||
if is_container_obj(obj.obj_n) then
|
||||
search(obj)
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
Reference in New Issue
Block a user