Ren'Py Sexbot Restoration 2124 [v0.14.1] [squirrel24]

4.30 star(s) 17 Votes

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
I figured it out, it was the vanilla bot remover mod. It kills the vanilla and squirrel mods in the SR24 base game.
Sorry I didn't see your question earlier but I'm glad you figured it out. I will put this info in the game's readme file for the next version.
 

tak51

Newbie
Dec 17, 2017
62
35
182
Hi, I had a question I couldn't find answer on this thread.
What's the point/use of Mood?
Very early on, I try to never stay in Bad then it goes up naturally (successful whoring mood bonus/ bedwarmer bots/workout and successful salvaging).
I would guess getting a mood worse than Bad would give debuff but what's the use to get a better mood?
(I would bet on more xp on social interaction but have no proof to support this)
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
Hi, I had a question I couldn't find answer on this thread.
What's the point/use of Mood?
Very early on, I try to never stay in Bad then it goes up naturally (successful whoring mood bonus/ bedwarmer bots/workout and successful salvaging).
I would guess getting a mood worse than Bad would give debuff but what's the use to get a better mood?
(I would bet on more xp on social interaction but have no proof to support this)
:unsure: The answer isn't what you're hoping for: as far as I can tell it's only "flavor" and has no effect on game play. Radnor created the 'mood' stat for the MC in DSCS and in SR24 I've continued to make it go up and down based upon player actions. I've looked through the code but I can't find anything that is influenced by the MC's 'mood' stat. If any experienced DSCS players know more than I do please correct me. Interestingly, right below the code that creates the 'mood' stat there is another stat created called 'despair' but it's not used anywhere in the game. It must have been a future plan in DSCS. I hadn't planned to make 'mood' influence game play but your guess is pretty good, maybe I'll use it and put you in the credits. ;) For now just be a nice guy and increase the MC's mood by assigning lots of bots the 'bedroom toy' role, after all that's how you see the images and videos of the bots anyway. :) I don't think I'll ever do anything with 'despair', too depressing to think about. :oops:
 

Apokolypse

Newbie
Apr 6, 2020
48
38
127
Damn it, I broke it again. I'm locked out of my storage, so I can't progress on the neighborhood watch quest. My bots are locked up:

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/000statements.rpy", line 569, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 80, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 90, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 11, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 13, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 22, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 33, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 44, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 48, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 52, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 96, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 101, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 51, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 58, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 59, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 70, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 19, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 44, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in <module>
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 25, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 29, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 30, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 32, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 62, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 65, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in <module>
  File "game/modules/0010_dscs_base/game/characters/bot_base/bot_chassis.rpy", line 30, in integrity
AttributeError: 'NoneType' object has no attribute 'outfit'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "modules/0005_core/core/main_loop.rpyc", line 80, in script call
  File "modules/0005_core/core/main_loop.rpyc", line 19, in script
  File "renpy/ast.py", line 2015, in execute
    self.call("execute")
  File "renpy/ast.py", line 2003, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "renpy/statements.py", line 278, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000statements.rpy", line 569, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "renpy/exports.py", line 3136, in call_screen
    rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
  File "renpy/ui.py", line 298, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3325, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
  File "renpy/display/core.py", line 3737, in interact_core
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/screen.py", line 436, in visit_all
    callback(self)
  File "renpy/display/core.py", line 3737, in <lambda>
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/screen.py", line 447, in per_interact
    self.update()
  File "renpy/display/screen.py", line 637, in update
    self.screen.function(**self.scope)
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 80, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 90, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 11, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 13, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 22, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 33, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 44, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 48, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 52, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 96, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 101, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 51, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 58, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 59, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 70, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 19, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 44, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in <module>
  File "renpy/display/screen.py", line 1286, in use_screen
    screen.function(**scope)
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 25, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 29, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 30, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 32, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 62, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 65, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in execute
  File "renpy/ast.py", line 191, in evaluate
    args.append(renpy.python.py_eval(v, locals=scope))
  File "renpy/python.py", line 2276, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "renpy/python.py", line 2269, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in <module>
  File "game/modules/0010_dscs_base/game/characters/bot_base/bot_chassis.rpy", line 30, in integrity
AttributeError: 'NoneType' object has no attribute 'outfit'

Windows-10-10.0.22621
Ren'Py 7.4.11.2266
SR24 0.11.2
Wed Apr  9 01:33:37 2025
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
Damn it, I broke it again. I'm locked out of my storage, so I can't progress on the neighborhood watch quest. My bots are locked up:

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/000statements.rpy", line 569, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 80, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 90, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 11, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 13, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 22, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 33, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 44, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 48, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 52, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 96, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 101, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 51, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 58, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 59, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 70, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 19, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 44, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in <module>
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 25, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 29, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 30, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 32, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 62, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 65, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in <module>
  File "game/modules/0010_dscs_base/game/characters/bot_base/bot_chassis.rpy", line 30, in integrity
AttributeError: 'NoneType' object has no attribute 'outfit'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "modules/0005_core/core/main_loop.rpyc", line 80, in script call
  File "modules/0005_core/core/main_loop.rpyc", line 19, in script
  File "renpy/ast.py", line 2015, in execute
    self.call("execute")
  File "renpy/ast.py", line 2003, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "renpy/statements.py", line 278, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000statements.rpy", line 569, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "renpy/exports.py", line 3136, in call_screen
    rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
  File "renpy/ui.py", line 298, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3325, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
  File "renpy/display/core.py", line 3737, in interact_core
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/screen.py", line 436, in visit_all
    callback(self)
  File "renpy/display/core.py", line 3737, in <lambda>
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/screen.py", line 447, in per_interact
    self.update()
  File "renpy/display/screen.py", line 637, in update
    self.screen.function(**self.scope)
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 78, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 80, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 90, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 10, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 11, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 13, in execute
  File "game/modules/0005_core/screens/ui_frame.rpy", line 22, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 94, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 18, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 33, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 44, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 48, in execute
  File "game/modules/0005_core/screens/ui_scrollbox.rpy", line 52, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 95, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 96, in execute
  File "game/modules/0010_dscs_base/screens/interactions/default.rpy", line 101, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 50, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 51, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 58, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 59, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 70, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 17, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 19, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 44, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in execute
  File "game/modules/0010_dscs_base/screens/interactions/common.rpy", line 48, in <module>
  File "renpy/display/screen.py", line 1286, in use_screen
    screen.function(**scope)
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 12, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 25, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 29, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 30, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 32, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 62, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 65, in execute
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in execute
  File "renpy/ast.py", line 191, in evaluate
    args.append(renpy.python.py_eval(v, locals=scope))
  File "renpy/python.py", line 2276, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "renpy/python.py", line 2269, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "game/mods/ShakyMod_BotStorageMover.rpy", line 66, in <module>
  File "game/modules/0010_dscs_base/game/characters/bot_base/bot_chassis.rpy", line 30, in integrity
AttributeError: 'NoneType' object has no attribute 'outfit'

Windows-10-10.0.22621
Ren'Py 7.4.11.2266
SR24 0.11.2
Wed Apr  9 01:33:37 2025
I'm sorry you're having trouble again but I can't help you. The error is immediately after a number of operations in one of Mr_Shaky's mods (BotStorageMover) and I know nothing about that mod. I don't use mods and I don't follow them.

The actual error is in game code and I know what function call was made but I don't know the specific reason it failed. Are you using bot mods and do some of them not have the SR24 specific parts (vagina, ears, and implants)? I am guessing the function was trying to find one of these parts on a bot that doesn't have that type of part. Just an educated guess, I am not certain of this.
 

Apokolypse

Newbie
Apr 6, 2020
48
38
127
I'm sorry you're having trouble again but I can't help you. The error is immediately after a number of operations in one of Mr_Shaky's mods (BotStorageMover) and I know nothing about that mod. I don't use mods and I don't follow them.

The actual error is in game code and I know what function call was made but I don't know the specific reason it failed. Are you using bot mods and do some of them not have the SR24 specific parts (vagina, ears, and implants)? I am guessing the function was trying to find one of these parts on a bot that doesn't have that type of part. Just an educated guess, I am not certain of this.
I'll run through my bot adds and figure out which is causing the issue. It's likely one of the rarer ones to spawn due to how far I made it before coming across that bot. Can you recommend a process that would be faster than going line by line through code? Is there any sign that could point to the problem bot?
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
I'll run through my bot adds and figure out which is causing the issue. It's likely one of the rarer ones to spawn due to how far I made it before coming across that bot. Can you recommend a process that would be faster than going line by line through code? Is there any sign that could point to the problem bot?
I'm not certain it is a corrupt bot in a mod or if something corrupted one of the bots during play. Do you use a lot of mods? I know you use the storage mover, any others? I'm sorry but using mods is risky and since I don't use them I can't help much.

If we assume that it is a corrupt bot in a mod then open a saved game shortly before the crash and make a list of all bots you own. Figure out which bot mod they came from and check their mod files. Check the section on 'default_parts'. If you read the MS Word file "fixing bot mods for SR24" in the information folder installed with the game it will help you understand the issues. The most likely issue is a bot that has a part type (slot) that is not in the vanilla SR24 game.

Unfortunately removing mods is tricky (it usually breaks saved games) so fixing the mod is the better option. If you figure out which bot it is and edit the .json bot mod file I suggest when you start playing go to the flea market and sell every one of those bots you have immediately. I know this is painful but they will probably crash the game again at some point.
 

Mr_Shaky

Member
Nov 6, 2017
227
235
246
squirrel24 Apokolypse
The relevant code in the mod is in the storage screen. Lines 65-70 is this:
Code:
65: if bot:
66:   use info_row("{size=-8}Chassis:{/}","{size=-8}{mark}"+str(bot.chassis.integrity)+"%{/}{/}")
67:   use info_row("{size=-8}PsychoCore:{/}","{size=-8}"+bot.psychocore.status_str+"{/}")
68: else:
69:   use info_row("{size=-8} {/}","{size=-8} {/}")
70:   use info_row("{size=-8} {/}","{size=-8} {/}")
Seems to me that it's trying to fetch an integrity value to display in the menu but is unable to for some reason. All I can come up with is that either the bot object is corrupted/incomplete, or some other object somehow ended up in the storage.

I can't really help without setting up an identical install and having a save to troubleshoot but I don't have time or energy for that with school going on.
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
squirrel24 Apokolypse
The relevant code in the mod is in the storage screen. Lines 65-70 is this:
Code:
65: if bot:
66:   use info_row("{size=-8}Chassis:{/}","{size=-8}{mark}"+str(bot.chassis.integrity)+"%{/}{/}")
67:   use info_row("{size=-8}PsychoCore:{/}","{size=-8}"+bot.psychocore.status_str+"{/}")
68: else:
69:   use info_row("{size=-8} {/}","{size=-8} {/}")
70:   use info_row("{size=-8} {/}","{size=-8} {/}")
Seems to me that it's trying to fetch an integrity value to display in the menu but is unable to for some reason. All I can come up with is that either the bot object is corrupted/incomplete, or some other object somehow ended up in the storage.

I can't really help without setting up an identical install and having a save to troubleshoot but I don't have time or energy for that with school going on.
I don't think these lines are the cause of the crash, they are display only. The error message says the crash happened in this line:

for slot,part in sorted(self.owner.outfit.items()):

This code cycles through the parts on the bot so it can find the one with the lowest integrity. Something was wrong and the "self.owner" object was missing or invalid so it's value became "nonetype" which does not have an "outfit" parameter so the game crashed.

How many bots do you have in your game? You could try opening a saved game from before the crash and immediately sell one of your bots at the flea market. Play for a while and if it crashes that wasn't the problem bot. Open the game again and try selling a different bot. If you have only one problem bot you'll figure out which one it is and the game should be OK. If you have multiple problem bots then this won't work. If it's multiple problem bots the number of permutations and combinations to test makes it virtually impossible and I think you should give up and start over.
 

Mr_Shaky

Member
Nov 6, 2017
227
235
246
This code cycles through the parts on the bot so it can find the one with the lowest integrity. Something was wrong and the "self.owner" object was missing or invalid so it's value became "nonetype" which does not have an "outfit" parameter so the game crashed.
o_O I can't really make sense of it at a glance, maybe I'm just tired.
If self.owner is None, bot should be None and "if bot" should return false which means it won't check for integrity in the first place.
Yet it checks integrity, which means bot == True and != None
Yet self.owner is None when it should be that "bot" is the same as the chassis' self.owner
How does None have a chassis?
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
o_O I can't really make sense of it at a glance, maybe I'm just tired.
If self.owner is None, bot should be None and "if bot" should return false which means it won't check for integrity in the first place.
Yet it checks integrity, which means bot == True and != None
Yet self.owner is None when it should be that "bot" is the same as the chassis' self.owner
How does None have a chassis?
I'm sorry but I didn't read the messages carefully and didn't notice that my last message was replying to Mr_Shaky. I need to pay more attention, sorry.

Mr_Shaky; You understand how bots, slots, parts, owners, and outfits all fit together better than I do. You've helped me solve problems that my ignorance caused in earlier versions of SR24. I don't know what happened and I certainly don't know how to fix it.

Apokolypse;
My earlier post described a trial and error approach to salvaging your game. If there is only one corrupted bot you should be able to do this. If there is more than one corrupted bot it won't work and I think you have to accept that the game is lost and start over. Sorry.
 
Last edited:

Aeneasc

Newbie
Apr 28, 2017
53
159
158
I hadn't planned to make 'mood' influence game play but your guess is pretty good, maybe I'll use it and put you in the credits. ;) For now just be a nice guy and increase the MC's mood by assigning lots of bots the 'bedroom toy' role, after all that's how you see the images and videos of the bots anyway. :) I don't think I'll ever do anything with 'despair', too depressing to think about. :oops:
I feel that this would be some kind of low hanging fruit for you to make an already existing stat very relevant for the gameplay. The worse the mood gets for the MC, the less he would get his shit together. You could punish bad moods with AP reductions and/or significantly reduce the efficiency of tinkering / hacking (depressed). Then on the other side you could also reward excellent mood (motivated). This would be a real incentive to keep the mood up - currently I wouldn't consider doing anything for MCs mood since it doesn't offer benefits and it binds a bot role (bedroom toy) as well as MC actions, therefore, it is not wise from a business administration point of view. Of course: To be perfect, the excellent mood would need to be adjusted so that the benefit is notable higher than the costs for the effort to maintain it.
 
Last edited:

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
I feel that this would be some kind of low hanging fruit for you to make an already existing stat very relevant for the gameplay. The worse the mood gets for the MC, the less he would get his shit together. You could punish bad moods with AP reductions and/or significantly reduce the efficiency of tinkering / hacking (depressed). Then on the other side you could also reward excellent mood (motivated). This would be a real incentive to keep the mood up - currently I wouldn't consider doing anything for MCs mood since it doesn't offer benefits and it binds a bot role (bedroom toy) as well as MC actions, therefore, it is not wise from a business administration point of view. Of course: To be perfect, the excellent mood would need to be adjusted so that the benefit is notable higher than the costs for the effort to maintain it.
:unsure: Your post started saying this is "low hanging fruit" and then describes why this isn't true. Most people think game development is mainly about programming and graphics: how hard is it to write the program and how long will it take to create tens or hundreds of images. Fewer people consider designing the game and balancing game play for difficulty, realism, etc.

To make the MC's mood influence the game requires 4 tasks: 1) deciding how it will work, 2) programming, 3) testing and debugging, and 4) playing the game to determine if it's too hard, too easy, or "just right". You loop through these 4 tasks until at the end it's "just right". Tasks 2 and 3 are the low hanging fruit you started with and tasks 1 and 4 are the things you mention later that are a lot of work. For SR24 task 4 is very large because the game has 4 difficulty settings and it must be "just right" in all of them. (Disclosure: I only do 'Easy' and 'Hardcore' and assume the levels in between will be OK.)

SR24 is most difficult at the beginning and the MC's mood is typically bad. If this causes a penalty the beginning becomes even harder. As your skills grow and you build a bunch of bot assistants the game becomes easier and the MC's mood is typically great. If this provides a benefit the game gets even easier. Accommodating both of these situations would be a challenge.

Bottom line, this would take me a long time to do and I'm not willing to put the time into it. I have a story to tell and activities for the MC, bots, and other characters to put into the game and I'd rather do those things. I know this isn't very satisfying but life is full of compromises. I can't resist quoting the Rolling Stones here; "You can't always get what you want but if you try some time you get what you need." :) Cheers!
 

aoeusnth

Newbie
Oct 16, 2018
31
42
133
I guess having mood influencing skill gain rate would be a safe change balance-wise, especially the social skill, it could also boost finding things on the dump (for bots that's for some reason dependent on social skill so I guess mood makes sense... somehow?). But at least it would be doing something. Thinking of skills: The per-item skills don't really advance notably right now, I guess they're too fine-grained.

On another note I find myself really wishing I could dismantle bots right there on the spot on the dump because at this stage I'm not going to fix up some random D-tier bot, even if it has good skills. How about an option "ignore bot" (free) and "dismantle" (1AP).
 

AkiranGaming

Well-Known Member
Jan 4, 2024
1,106
733
199
I guess having mood influencing skill gain rate would be a safe change balance-wise, especially the social skill, it could also boost finding things on the dump (for bots that's for some reason dependent on social skill so I guess mood makes sense... somehow?). But at least it would be doing something. Thinking of skills: The per-item skills don't really advance notably right now, I guess they're too fine-grained.

On another note I find myself really wishing I could dismantle bots right there on the spot on the dump because at this stage I'm not going to fix up some random D-tier bot, even if it has good skills. How about an option "ignore bot" (free) and "dismantle" (1AP).
I would bet none of that will go on the dev road map, because it would require a lot of work that would distract from working on the story portion of the game. The in game reason why you would not be able to dismantle on the spot is the need for specific tools etc. It is probably best to make sure you have enough storage and then dismantle any unwanted bots after getting back from a scavenger hunt.
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
The last two posts are interesting. The second is correct. The first starts "I guess ..." which was my point. I can't "guess". I have to design and test and redesign and retest to confirm my "guess" or the game will be bad.

On the "dismantle on the spot" at the dump: no way. The dump is patrolled, you can't hang out there. If you don't want the bot go straight to the Flea Market and sell it, there's no AP cost for that. You can go back and forth all you want but it is "grind".

In this game the start is challenging, interesting, and fun. The game mechanics are good and the subject of sexbots is interesting so you get into it. That's the magic Radnor created that I fell in love with. Later the challenge fades away and you start focusing on QOL stuff, "what if" things, etc. because making money no longer is critical. I'd love to keep the initial intensity going but honestly I don't know how. Some people get into collecting bots which is fine but making more and more bots doesn't interest me.

SR24 tells a story about a young sex bot mechanic and entrepreneur growing up. I try to enhance the sexbot mechanic aspect of the game and tell this story at the same time. I know I can't please everyone so I don't try to do that. I know some people will lose interest in the game along the way and that's OK. I'm enjoying myself learning how to develop a game because Radnor made it possible for me to do it.
 

aoeusnth

Newbie
Oct 16, 2018
31
42
133
With "I guess" I meant "looking at the stat, and the game mechanics, and having done my own fair share of balancing, this seems to be a direction that would be comparatively easy do because the implications of such a change won't snowball". Not that it is easy, or would need no design, but that among the things that are possible, it's one that's not a complete headache. Whether it's worth it well that's up to you. Or anything else of what I'm saying, for that matter.

Your point about dismantling on the spot breaking in-universe logic is absolutely right. I'd like to double down on the "ignore bot" option though: Being a scrawny F-strength nerd do you really expect me to lug every D-tier bot to the shop just to dismantle for a grand in parts.

I'm not so much a collector but I *do* staff my shop with the best. And sell customers top-shelf bots with bottom-shelf parts.

I'd love to keep the initial intensity going but honestly I don't know how. Some people get into collecting bots which is fine but making more and more bots doesn't interest me.
Raise the stakes: Currently the PC has their shop in more or less the slums, the environment is rough but once the local mob is pacified it's time to move on. The game stays the same, but the sharks get richer, customer tastes more refined, you need to move into a new shop to have the machines etc. necessary to even repair B-grade parts, with a new shop comes a new landowner, new neighbors who might not want to beat you up but start a hostile takeover of your company and you have to set capital aside to fend that off. Thinking *very* far ahead, both in terms of in-universe and game-development time, maybe at one point PC starts to produce bot parts, then bots. Certainly going to take more capital and more social standing than they have now. Keeping the pressure up though you also want to think about pacing.

As to catering to bot collectors I guess a separate sandbox mode? A mode that still has the choice between easy/medium/hard economics but doesn't put you on the spot with "build this bot in a week" type deals -- either because it's disabled, or because you can cheaply by yourself out of every deadline. Shortcut story content with money progression, no quests necessary to start working on better parts just spend the money. Never mind breaking the game in that mode that's what sandboxes are for.

Or, and this would be a ton more work than a sandbox, increase the depth of the automated managing, FreeCities / general brothel management but with sexbots. Economy-wise, looking at what a bot can make in a night and what I pay in rent, yep I could totally afford renting a second property to run a brothel out of.
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
With "I guess" I meant "looking at the stat, and the game mechanics, and having done my own fair share of balancing, this seems to be a direction that would be comparatively easy do because the implications of such a change won't snowball". Not that it is easy, or would need no design, but that among the things that are possible, it's one that's not a complete headache. Whether it's worth it well that's up to you. Or anything else of what I'm saying, for that matter.

Your point about dismantling on the spot breaking in-universe logic is absolutely right. I'd like to double down on the "ignore bot" option though: Being a scrawny F-strength nerd do you really expect me to lug every D-tier bot to the shop just to dismantle for a grand in parts.

I'm not so much a collector but I *do* staff my shop with the best. And sell customers top-shelf bots with bottom-shelf parts.



Raise the stakes: Currently the PC has their shop in more or less the slums, the environment is rough but once the local mob is pacified it's time to move on. The game stays the same, but the sharks get richer, customer tastes more refined, you need to move into a new shop to have the machines etc. necessary to even repair B-grade parts, with a new shop comes a new landowner, new neighbors who might not want to beat you up but start a hostile takeover of your company and you have to set capital aside to fend that off. Thinking *very* far ahead, both in terms of in-universe and game-development time, maybe at one point PC starts to produce bot parts, then bots. Certainly going to take more capital and more social standing than they have now. Keeping the pressure up though you also want to think about pacing.

As to catering to bot collectors I guess a separate sandbox mode? A mode that still has the choice between easy/medium/hard economics but doesn't put you on the spot with "build this bot in a week" type deals -- either because it's disabled, or because you can cheaply by yourself out of every deadline. Shortcut story content with money progression, no quests necessary to start working on better parts just spend the money. Never mind breaking the game in that mode that's what sandboxes are for.

Or, and this would be a ton more work than a sandbox, increase the depth of the automated managing, FreeCities / general brothel management but with sexbots. Economy-wise, looking at what a bot can make in a night and what I pay in rent, yep I could totally afford renting a second property to run a brothel out of.
You’ve got lots of good ideas. Sadly you’re talking about years and years of work and it’s way more than I can do. As I’ve said before, the source code is available for you or anyone else to use. Anyone can take the core game in any direction they choose. The only requirement is to give Radnor credit as he requests. Mentioning me isn’t necessary.
 

AkiranGaming

Well-Known Member
Jan 4, 2024
1,106
733
199
You’ve got lots of good ideas. Sadly you’re talking about years and years of work and it’s way more than I can do. As I’ve said before, the source code is available for you or anyone else to use. Anyone can take the core game in any direction they choose. The only requirement is to give Radnor credit as he requests. Mentioning me isn’t necessary.
I understand your point of view and it is completely valid, but technically you are wrong that anyone can take the core game in any direction they choose. While it is true that it is possible to mod the code, not everyone has that ability or time/desire to do it. Making suggestions to the only current developer is the only option to try and make changes to the game. Personally, I'd rather not have several different variations of the game out there either, but that is just my opinion.
 

squirrel24

Active Member
Game Developer
Mar 12, 2021
667
746
217
I understand your point of view and it is completely valid, but technically you are wrong that anyone can take the core game in any direction they choose. While it is true that it is possible to mod the code, not everyone has that ability or time/desire to do it. Making suggestions to the only current developer is the only option to try and make changes to the game. Personally, I'd rather not have several different variations of the game out there either, but that is just my opinion.
:unsure: You are correct, the word "can" is technically incorrect here. Everyone is "allowed" to use the source code to create their own game but of course they may not be able to or may not have the time. I know I can count on you to correct me! ;)

I agree that multiple versions are undesirable but there is no other way for people's ideas to come to fruition. I will not implement large scale ideas like those presented and I want people to understand this. When giving this sort of negative information to people with good ideas I also encourage them to express themselves by making it happen themselves. I know many people cannot do this for various reasons but perhaps their circumstances will change in the future or perhaps someone else will read this and decide they could make it happen.

I will always read people's ideas but sadly most of them will not make it into SR24. Having to say this repeatedly is unpleasant; I hate being negative and saying "no" all the time. In this particular case, I like the ideas. Even worse, they are strikingly similar to ideas of my own that I considered when creating the SR24 road map. I had to reject my own ideas because the scope was way too large and this was sort of deja vu.
 
  • Like
Reactions: the2ndanti
4.30 star(s) 17 Votes