Jump to content

[1.7 - 1.9] Kourageous Tourists - tiny mod making tourists less helpless


whale_2

Recommended Posts

42 minutes ago, whale_2 said:

Updating for 1.8 was a no-brainer. I even managed to safely paraglide dozen of tourists. I just need to make tourists who booked paragliding contracts able to EVA while in the air. Fairly easy, but not done yet.

Great, so once you release the update, I'll install it

Link to comment
Share on other sites

So, finally, updated to recent KSP versions.

Also added SkyDiving contracts - started when 1.4 got released, but was distracted by lots of other stuff.

Now you can pack your aircraft with some kerbals and throw them out from the sky - they will let the hold themselves and parachute will be automatically opened in 5 sec. Skydiving kerbals are taught to keep horizontal speed around 10 m/s which is quite survivable for them, however, don't leave them alone, circle around in your aircraft or hang around in your helicopter - if you fly away too far, the game will decide that they don't deserve a safe landing, so try to keep them within 10-12 km.

I seriously suggest getting AtmosphereAutopilot - it makes switching between the aircraft and paragliders possible without suddenly plummeting into the ground.

 

Some screenshots: https://imgur.com/a/ts88Dyz  

 

Grab the latest version here: Release on GitHub

 

A2l0pDd.png

Edited by whale_2
Link to comment
Share on other sites

@whale_2 Tried a selfie contract with this (0.5 on 1.9.1) and it's throwing exceptions. Selfies are not captured and the contract objectives are not met.

KSP.log

Spoiler

[ERR 18:17:36.608] Exception handling event Selfie in class KourageousAnomalyParameter:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () [0x00041] in <d79a3db9aefe439baefd15d77d426d61>:0 
  at EventVoid.Fire () [0x00127] in <55ba45dc3a43403382024deac8dcd0be>:0 

[EXC 18:17:36.610] ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
	System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () (at <d79a3db9aefe439baefd15d77d426d61>:0)
	EventVoid.Fire () (at <55ba45dc3a43403382024deac8dcd0be>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:LogException(Exception)
	EventVoid:Fire()
	KourageousTourists.KourageousTouristsAddOn:TakeSelfie()
	BaseEvent:Invoke()
	UIPartActionButton:OnClick()
	UnityEngine.EventSystems.EventSystem:Update()

 

 

Edited by Tonka Crash
Link to comment
Share on other sites

8 hours ago, Tonka Crash said:

@whale_2 Tried a selfie contract with this (0.5 on 1.9.1) and it's throwing exceptions. Selfies are not captured and the contract objectives are not met.

KSP.log

  Reveal hidden contents


[ERR 18:17:36.608] Exception handling event Selfie in class KourageousAnomalyParameter:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () [0x00041] in <d79a3db9aefe439baefd15d77d426d61>:0 
  at EventVoid.Fire () [0x00127] in <55ba45dc3a43403382024deac8dcd0be>:0 

[EXC 18:17:36.610] ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
	System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () (at <d79a3db9aefe439baefd15d77d426d61>:0)
	EventVoid.Fire () (at <55ba45dc3a43403382024deac8dcd0be>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:LogException(Exception)
	EventVoid:Fire()
	KourageousTourists.KourageousTouristsAddOn:TakeSelfie()
	BaseEvent:Invoke()
	UIPartActionButton:OnClick()
	UnityEngine.EventSystems.EventSystem:Update()

 

 

That's a shame. Will look into it tonight.

Link to comment
Share on other sites

On 5/26/2020 at 1:41 AM, Tonka Crash said:

@whale_2 Tried a selfie contract with this (0.5 on 1.9.1) and it's throwing exceptions. Selfies are not captured and the contract objectives are not met.

KSP.log

  Reveal hidden contents


[ERR 18:17:36.608] Exception handling event Selfie in class KourageousAnomalyParameter:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () [0x00041] in <d79a3db9aefe439baefd15d77d426d61>:0 
  at EventVoid.Fire () [0x00127] in <55ba45dc3a43403382024deac8dcd0be>:0 

[EXC 18:17:36.610] ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
	System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0)
	KourageousTourists.Contracts.KourageousAnomalyParameter.onSelfieTaken () (at <d79a3db9aefe439baefd15d77d426d61>:0)
	EventVoid.Fire () (at <55ba45dc3a43403382024deac8dcd0be>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:LogException(Exception)
	EventVoid:Fire()
	KourageousTourists.KourageousTouristsAddOn:TakeSelfie()
	BaseEvent:Invoke()
	UIPartActionButton:OnClick()
	UnityEngine.EventSystems.EventSystem:Update()

 

 

Should be fixed in 0.5.1

Link to comment
Share on other sites

21 hours ago, whale_2 said:

Should be fixed in 0.5.1

Interesting mod :) I'll try it in a new career. Btw, I see some exceptions in a sandbox on launch. There are no tourists on board or in the game:

Spoiler

[ERR] Exception handling event onFlightReady in class KourageousTouristsAddOn:System.NullReferenceException: Object reference not set to an instance of an object
  at KourageousTourists.TouristFactory.isSkyDiver (ProtoCrewMember crew) [0x00007] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.TouristFactory.createForLevel (System.Int32 level, ProtoCrewMember crew) [0x000a2] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.KourageousTouristsAddOn.reinitVessel (Vessel vessel) [0x000c0] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.KourageousTouristsAddOn.OnFlightReady () [0x00024] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at EventVoid.Fire () [0x00127] in <55ba45dc3a43403382024deac8dcd0be>:0 

[EXC] NullReferenceException: Object reference not set to an instance of an object
	KourageousTourists.TouristFactory.isSkyDiver (ProtoCrewMember crew) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.TouristFactory.createForLevel (System.Int32 level, ProtoCrewMember crew) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.KourageousTouristsAddOn.reinitVessel (Vessel vessel) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.KourageousTouristsAddOn.OnFlightReady () (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	EventVoid.Fire () (at <55ba45dc3a43403382024deac8dcd0be>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:LogException(Exception)
	EventVoid:Fire()
	<PostInit>d__34:MoveNext()
	UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
[LOG] Unpacking Untitled Space Craft
[ERR] Exception handling event onVesselGoOffRails in class KourageousTouristsAddOn:System.NullReferenceException: Object reference not set to an instance of an object
  at KourageousTourists.TouristFactory.isSkyDiver (ProtoCrewMember crew) [0x00007] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.TouristFactory.createForLevel (System.Int32 level, ProtoCrewMember crew) [0x000a2] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.KourageousTouristsAddOn.reinitVessel (Vessel vessel) [0x000c0] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at KourageousTourists.KourageousTouristsAddOn.OnVesselGoOffRails (Vessel vessel) [0x0000b] in <bd31a97189864b89be1c3dfba0d98a71>:0 
  at EventData`1[T].Fire (T data) [0x000b0] in <55ba45dc3a43403382024deac8dcd0be>:0 

[EXC] NullReferenceException: Object reference not set to an instance of an object
	KourageousTourists.TouristFactory.isSkyDiver (ProtoCrewMember crew) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.TouristFactory.createForLevel (System.Int32 level, ProtoCrewMember crew) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.KourageousTouristsAddOn.reinitVessel (Vessel vessel) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	KourageousTourists.KourageousTouristsAddOn.OnVesselGoOffRails (Vessel vessel) (at <bd31a97189864b89be1c3dfba0d98a71>:0)
	EventData`1[T].Fire (T data) (at <55ba45dc3a43403382024deac8dcd0be>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:LogException(Exception)
	EventData`1:Fire(Vessel)
	Vessel:GoOffRails()
	OrbitPhysicsManager:LateUpdate()

 

 

Related to that, is there a way to disable skydiving contracts with a MM patch? I didn't see anything obvious in the .cfg. But there is a skydiving weight option in the save file.

I'm not a fun pilot and all those ignored skydiving contracts fill up the mission control :)

Edited by HansAcker
Link to comment
Share on other sites

34 minutes ago, HansAcker said:

mod :) I'll try it in a new career. Btw, I see some exceptions in a sandbox on launch. There are no tourists on board or in the game

Please post a log file, needed to diagnose and fix.  While sometimes useful, snippets don't necessarily show the complete story

Edited by linuxgurugamer
Link to comment
Share on other sites

10 hours ago, linuxgurugamer said:

@whale_2 I'm busy right now, but let me know if you'd like me to take a look

Thanks, I can fix it, no problem. TBH, I never tested it in sandbox - this mod doesn't make sense in sandbox at all, I'll probably just disable it.


@HansAcker - I'll see what I can do with skydiving.

Link to comment
Share on other sites

2 hours ago, whale_2 said:

this mod doesn't make sense in sandbox at all,

Don't say that :)  A sandbox can use the experience system, too. There just wouldn't be any contracts but the EVA restrictions should work.

I never felt the need to send tourists on EVA in a sandbox game before, so I can't comment much on how useful it would be for me to have the mod work in sandbox, too. It sure would open up new missions.

Edit: it takes manual interaction to create 0-star tourists in a sandbox (they come into existence with 5 stars and I had to edit the save file) but it's possible

Edited by HansAcker
Link to comment
Share on other sites

2 minutes ago, HansAcker said:

Don't say that :)  A sandbox can use the experience system, too. There just wouldn't be any contracts but the EVA restrictions should work.

I never felt the need to send tourists on EVA in a sandbox game before, so I can't comment much on how useful it would be for me to have the mod work in sandbox, too. It sure would open up new missions.

Without contracts how do you get tourists?

Link to comment
Share on other sites

Ok, 0.5.2 is out.

Now to unlock skydiving contracts you must BUZZ THE TOWER first!

Those contracts still could be disabled via config file. I feel too lazy to make a GUI for it, sorry.

Mod now is normally disabled on non-career mode, but if you really need it - you can forcefully enable it in config. (See changelog)

Also other celestial bodies are available for skydiving.  

Edited by whale_2
Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...
On 5/30/2020 at 10:44 AM, whale_2 said:

Ok, 0.5.2 is out.

Now to unlock skydiving contracts you must BUZZ THE TOWER first!

Those contracts still could be disabled via config file. I feel too lazy to make a GUI for it, sorry.

Mod now is normally disabled on non-career mode, but if you really need it - you can forcefully enable it in config. (See changelog)

Also other celestial bodies are available for skydiving.  

Hi @whale_2

Have a small problem.  Took 6 tourists to the Mun with a rover with EAS seats.  The tourists were level 1 (had all been to orbit before), were able to EVA, and get into the EAS seats.  Then they were unable to disembark.

Do you have any idea what's wrong, or what can be done to fix it, even if it involves editing the save file?

Thanks in advance

Link to comment
Share on other sites

8 hours ago, linuxgurugamer said:

Hi @whale_2

Have a small problem.  Took 6 tourists to the Mun with a rover with EAS seats.  The tourists were level 1 (had all been to orbit before), were able to EVA, and get into the EAS seats.  Then they were unable to disembark.

Do you have any idea what's wrong, or what can be done to fix it, even if it involves editing the save file?

Thanks in advance

Sorry, no clue, need to replicate this first.

Link to comment
Share on other sites

  • 3 months later...

Hi, @whale_2

I think I found a bug on the chute deployment - if the Kerbal has the JetPack ability, the chute EvaStart event handling ends prematurely, and the Chute is not primed.

I made a pull request with the fix here.

Spoiler

This pull request is dedicated to the uncountable Kerbals that sacrificed their lives for this fix! :) 

 

Link to comment
Share on other sites

  • 2 weeks later...

Hi², @whale_2!

I finally undestood what was happening on lgg's bug report. You got bitten by the KSP's UpdatePipeline.

I made a pull request with this (and some more) fixes here.

In a nutshell:

  • Restores Equip/Remove helmet for EVA capable Tourists (something I enjoyed a lot on 1.4.x with KIS)

  • Preventing regular Crew to be "promoted" to Tourists at all

    • Silly mistake on the "IF" that was sorting Crew from Tourists

  • Surviving KSP's UpdatePipeline

    • Restoring Tourists Configuration between loading savegames

    • This was what "solved" by accident the lgg's incident, as reloading the savegame undid a lot of things KT had changed on the kerbalEVA

  • Applying Tourists rules to Tourists sitting on External Command Seats

    • This will fix correctly and safely lgg's issue

    • Also enforces some restrictions on the kerbalEVA's, that was not being applyed because usually KT's only applies restrictions to Kerbals on EVA, and Kerbals on External Command Seats are parts with some EVA attributes.

    • [Now with Selfies! :)]

Edited by Lisias
new feature. In italics.
Link to comment
Share on other sites

On 10/25/2020 at 6:27 PM, Lisias said:

Hi², @whale_2!

I finally undestood what was happening on lgg's bug report. You got bitten by the KSP's UpdatePipeline.

I made a pull request with this (and some more) fixes here.

In a nutshell:

  • Restores Equip/Remove helmet for EVA capable Tourists (something I enjoyed a lot on 1.4.x with KIS)

  • Preventing regular Crew to be "promoted" to Tourists at all

    • Silly mistake on the "IF" that was sorting Crew from Tourists

  • Surviving KSP's UpdatePipeline

    • Restoring Tourists Configuration between loading savegames

    • This was what "solved" by accident the lgg's incident, as reloading the savegame undid a lot of things KT had changed on the kerbalEVA

  • Applying Tourists rules to Tourists sitting on External Command Seats

    • This will fix correctly and safely lgg's issue

    • Also enforces some restrictions on the kerbalEVA's, that was not being applyed because usually KT's only applies restrictions to Kerbals on EVA, and Kerbals on External Command Seats are parts with some EVA attributes.

    • [Now with Selfies! :)]

Cool, thanks. I'll review the changes soon-ish. Sorry, with current stuff happening around me can't promise more :(

Link to comment
Share on other sites

1 hour ago, whale_2 said:

Cool, thanks. I'll review the changes soon-ish. Sorry, with current stuff happening around me can't promise more :(

The code is not going anywhere. Take your time. :)

I will update the PRs if I find something new (or a bug on it)

Link to comment
Share on other sites

  • 6 months later...

i love this mod so much as make me much easier to finish the tourism plus contracts that involve visitation of space spation and bases on moons and other planets...the tourists can now EVA on their own without the need of docking!

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...