Else Heart.Break()

Else Heart.Break()

andrewb Mar 12, 2016 @ 2:00am
How would I make a door lead somewhere else without directly hacking it?
I read in some other thread that a guy made a can that when drunk would make all the doors in the current room lead to a specific place for 10 seconds. I thought I would give that a shot but is it even possible? I've tried this:

var mf = Connect("MainFrame")
var room = GetRoom()
array thingies = mf.GetThingsInRoom(room)
loop x in thingies
if mf.GetTypeOfThing(x)=="door"
var door = Connect(x)
door.Goto("Hotel_Room1_Door1")
end
end


I am pretty sure I'm misunderstanding what the door.Goto actually does, It doesn't change the destination of the connected door, it's just using the door's function to make the beer can lead to the room. That would explain why I and everyone who's currently with me in a room gets teleported into my hotel room when I drink from the can . Only if I use it inside the hotel though (not sure why that is, my room is now full of people from the Hotel :tgrin:).
How would I go about making the door lead to my desired room remotely, if it's possible?
< >
Showing 1-13 of 13 comments
Cloud Ninja Mar 12, 2016 @ 11:22am 
Originally posted by andrewb:
I read in some other thread that a guy made a can that when drunk would make all the doors in the current room lead to a specific place for 10 seconds. I thought I would give that a shot but is it even possible? I've tried this:

var mf = Connect("MainFrame")
var room = GetRoom()
array thingies = mf.GetThingsInRoom(room)
loop x in thingies
if mf.GetTypeOfThing(x)=="door"
var door = Connect(x)
door.Goto("Hotel_Room1_Door1")
end
end


I am pretty sure I'm misunderstanding what the door.Goto actually does, It doesn't change the destination of the connected door, it's just using the door's function to make the beer can lead to the room. That would explain why I and everyone who's currently with me in a room gets teleported into my hotel room when I drink from the can . Only if I use it inside the hotel though (not sure why that is, my room is now full of people from the Hotel :tgrin:).
How would I go about making the door lead to my desired room remotely, if it's possible?
You dont. If you use goto via connecting somehow, it just pulls anything able to go through the door and sends it to the inputted door. However if you hack the goto inside the door, that makes it so anything using that door goes to the other door you set.
mreed2 Mar 15, 2016 @ 6:05am 
As far as I know, Cloud Ninja is correct -- you can't do what you are attempting to do within the confines of the game.

Call door.Goto(<dest>) /should/ produce no effect at all: the fact that you are reporting that it is teleporting people to the door's destination is almost certainly a bug. :) Generally speaking, functions that are missing a parameter can only be used on someone actually using the object in question -- for example, Slurp() will only work on someone using the device, the various Set operators in the drink API will only work on someone actually using the drink, and so forth. In the case of the door's Goto function, it should only work on someone actively using the door -- thus, my "That shouldn't work at all" comment above.

To make this work you'd need to actually modify the code running on the door, without actually using a modifier on it. There is an API in the game that allows you to do this (a Stove supports "GetCode()", "ClearCode()" and "AppendCode(string)"), but... The stove functions only work on an object that has been used on the stove, and the only objects that can be used on a stove are food or drink items, and (in any case), the only way to use one object on another is for the player to actually hold the object and use it.

So, it isn't possible to design something that automatically modifies the code of another object... :(
andrewb Mar 15, 2016 @ 2:31pm 
Well, I guess the guy I was referring to was either lying or I misunderstood what he said :D Thanks for the clarification though.
Oh and yea...try putting the code I posted above in any can, go to any room in the hotel and use it. It teleported me into my room along with a bunch of other seemingly random people. There were Babcia and Hank but also 2 ministry agents and some kind of female secretary person...
Zinal Mar 15, 2016 @ 11:02pm 
The person you were referring to most likely changed the doors too..
I played around and came up with this solution:

Drink:
var Destination = "" var MF = Connect("MainFrame") var objs = MF.GetThingsInRoom(GetRoom()) loop objs if(MF.GetTypeOfThing(@) == "door") var door = Connect(@) if(door.HasFunction("Change")) door.Change(Destination) end end end

Doors:
String def = "DEFAULT_DOOR_DESTINATION" var MF = Connect("MainFrame") void Change(dest) var MF = Connect("MainFrame") var def = "DEFAULT_DOOR_DESTINATION" MF.SaveMemory("Doors", dest) Say("Changed to " + dest) Sleep(10) MF.EraseMemory("Doors") Say("Back to normal") end String goto = MF.LoadMemory("Doors") if(GetUser() != "Sebastian" or goto == 0) Goto(def) else Goto(goto) end

Of course, change the DEFAULT_DOOR_DESTINATION strings into whatever the door was pointing to before
Last edited by Zinal; Mar 15, 2016 @ 11:07pm
andrewb Mar 17, 2016 @ 12:51pm 
Wow that's smart :tgrin: So every time you use the drink, it saves the destination to the mainframe memory for 10 seconds and when you use the door it checks if there's something in that memory and sets the destination accordingly. Thanks a bunch! It's kinda impractical since you do need to hack every door you wanna use this on but it's cool nonetheless.

Btw, has anyone ever tried getting the IsKeyPressed function to work on objects other than computers? Because it does work, though only if you are in the same room with the computer you are connecting to to call the function. And unfortunately, the neat trick of teleporting the computer to yourself doesn't work in this case.
When you are in one room with the computer, the function works properly but when you leave the room and teleport the computer to yourself, the function always returns false no matter what you are pressing.
YggdrasSoftGaming Jul 12, 2017 @ 10:22pm 
Originally posted by Zinal:
The person you were referring to most likely changed the doors too..
I played around and came up with this solution:

Drink:
var Destination = "" var MF = Connect("MainFrame") var objs = MF.GetThingsInRoom(GetRoom()) loop objs if(MF.GetTypeOfThing(@) == "door") var door = Connect(@) if(door.HasFunction("Change")) door.Change(Destination) end end end

Doors:
String def = "DEFAULT_DOOR_DESTINATION" var MF = Connect("MainFrame") void Change(dest) var MF = Connect("MainFrame") var def = "DEFAULT_DOOR_DESTINATION" MF.SaveMemory("Doors", dest) Say("Changed to " + dest) Sleep(10) MF.EraseMemory("Doors") Say("Back to normal") end String goto = MF.LoadMemory("Doors") if(GetUser() != "Sebastian" or goto == 0) Goto(def) else Goto(goto) end

Of course, change the DEFAULT_DOOR_DESTINATION strings into whatever the door was pointing to before
Okay, say I wanted to use this code to pull off something like from Howl's Moving Castle? Basically I've commandeered a room with a bed and a laptop(connected it to the internet). I have effectively cut the door off from the rest of the world except from me.

I want to make it so that I can use the laptop to change the exit to the room to be one of four doors and for those doors(when linked) to redirect back to the exit door to the room. This is what I have so far:

number op var DoorIn = Connect("AmandaApartment_DoorToLobby") var DoorOut Loop ClearText() Print(" .---------------.") Print(" | Door Transfer |") Print(" | Terminal |") Print(" '---------------'") Print("Where would you like to link the door?") Print("1. Apartment Exit") Print("2. Hotel Entrance") Print("3. Shore Store Entrance") Print("4. Lodge") op = Input("> ") if op >= 1 && op <=4 break end Print("Unrecognized Door") Sleep(2) end ClearText() if op == 1 DoorOut = "RentingApartmentsLobby_DoorToAmandaApartment" end if op == 2 DoorOut = "Hotel_Exterior_DoorToHotel" end if op == 3 DoorOut = "Door_Burrows_ToTheLodge" end if op == 4 DoorOut = "Lodge_Room1_DoorToEntry" end

Am I at least on the right track?
Zinal Jul 13, 2017 @ 1:34am 
You are well on your way, but you'll need to modify all connected doors to.

Below is a complete program for both the computer and the doors (This includes the "out door" and the doors it can connect to)


Computer:
number op var DoorInName = "AmandaApartment_DoorToLobby" var DoorOutName Loop ClearText() Print(" .---------------.") Print(" | Door Transfer |") Print(" | Terminal |") Print(" '---------------'") Print("Where would you like to link the door?") Print("1. Apartment Exit") Print("2. Hotel Entrance") Print("3. Shore Store Entrance") Print("4. Lodge") op = Input("> ") if op >= 1 && op <= 4 break end Print("Unrecognized Door") Sleep(2) end ClearText() if op == 1 DoorOutName = "RentingApartmentsLobby_DoorToAmandaApartment" end if op == 2 DoorOutName = "Hotel_Exterior_DoorToHotel" end if op == 3 DoorOutName = "Door_Burrows_ToTheLodge" end if op == 4 DoorOutName = "Lodge_Room1_DoorToEntry" end if DoorOutName != "" var MF = Connect("MainFrame") MF.SaveMemory(DoorInName, DoorOutName) MF.SaveMemory(DoorOutName, DoorInName) end

Doors:
String thisDoorName = "<<CHANGE THIS>>" String def = "<<CHANGE THIS>>" var MF = Connect("MainFrame") String goto = MF.LoadMemory(thisDoorName) if GetUser() != "Sebastian" or goto == "0" or goto == "" Goto(def) else Goto(goto) end
You need to change 2 things for each door:
The internal name of the door (Can be found out using an Extractor).
The default destination
Last edited by Zinal; Jul 13, 2017 @ 1:35am
YggdrasSoftGaming Jul 13, 2017 @ 6:42am 
Thank you so much and sorry for necro-ing the post.
Arucard Jul 19, 2017 @ 12:37pm 
Keep necro'ing, there's nowhere near enough info on this game.
Gl'bgolyb Aug 4, 2017 @ 4:34pm 
I've actually been working on this lately.

You can, with ONE hack, make a door go anywhere you want by making it call LoadMemory() on another computer. I like to use Osc1 through Osc4 as my workhorse computers because of how easy it is to remember their names.

So, for example, you modify a door with

var o = Connect("Osc1") if GetUser() == "Sebastian" && !o.LoadMemory("destination") == false Goto(o.LoadMemory("destination")) o.SaveMemory("destination", false) #Unnecessary, but helps keep things clean else Goto(wherever it originally went) end

That way, with something as simple as a floppy disc, you could pop on to an un-hacked tripod computer, and just tell Osc1 what to save "destination" as. Set it as false if you want the door to act as usual.

Mine is much more sophisticated atm, and includes a method of choosing any room you want to go to (and filtering out the ones that don't have doors like "Sebastian_inventory"), then giving you a list of doors to set "destination" to. Of course, that runs pretty slow when it's calling and filtering GetTypeOfThing() == "door" in every single room in the game. But eh, it's functional.
Gl'bgolyb Aug 4, 2017 @ 4:36pm 
Oh, and as for the return trip, I don't even bother. I use the Teleporter to go back home to my ultra-door. On my last playthrough, I set my creditcard to summon a door in front of me that led back home, and didn't disappear until I told it to so I had a quick return trip.

Makes having such a small inventory feel like less of a hassle when you can go anywhere in dorisburg so fast.
Arucard Aug 7, 2017 @ 7:10am 
Holy Sh!t dude, please make a "current projects" thread or guide for random awesome stuff you/others have made/are making/want to make.
up rep'd
Last edited by Arucard; Aug 7, 2017 @ 7:11am
Gl'bgolyb Aug 15, 2017 @ 9:16pm 
Originally posted by Arucard:
Holy Sh!t dude, please make a "current projects" thread or guide for random awesome stuff you/others have made/are making/want to make.
up rep'd
I might do that. I've build a lot of stuff I'm proud of, and the game really plays well to my subversive mindset.
< >
Showing 1-13 of 13 comments
Per page: 1530 50