Jump to content
The Dark Mod Forums

joebarnin

Member
  • Posts

    1086
  • Joined

  • Last visited

  • Days Won

    42

Posts posted by joebarnin

  1. 2 hours ago, Lzocast said:

    If that is indeed possible I'd submit that as a new way to give the player options for play style. I know it would be an extra thing to have to account for when building missions, a dev could perhaps prevent the player locking the guards out of important areas by having them return to a central location once they fail to enter a locked area (key stolen) at which point a new one spawns on them (as if they've gone back to the boss and reported a lost key), you could even add in more difficulty by say once this event has occurred a certain number of times the guards all get a bump up in alert status.

    I tested this. It does work, but only if you use the def_attach method for attaching the key (https://wiki.thedarkmod.com/index.php?title=Attaching_Props_to_AI#Belt_Objects_-_Keys). It does not work if you use the bindToJoint method for attaching the key.

  2. Congratulations! This is a massive and enjoyable mission. Get ready for multi-part fun! 

    Interesting, that this mission and The Painter's Wife were released close together. They don't have much in common, other than they are excellent (IMHO) and HUGE. A tribute to the modders, and a tribute to TDM platform that enables two very different missions.

    • Like 1
    • Thanks 1
  3. On 7/21/2020 at 5:49 AM, Lzocast said:

    Speaking of keys, would Dark Mod support a set up where guards you have stolen keys from could no longer open locked doors?

    I think it will work that way. There are two ways to allow a guard to pass through locked doors: if they have the key, or if they have the 'can_unlock' spawnarg. So if you attach the key to the guard but don't give them 'can_unlock', they can pass through the door if they have the key, but once you steal it from them they won't be able to open the door.

    At least, that's my understanding of how it works. I haven't actually tried this.

    • Like 1
  4. 10 hours ago, Bienie said:

    I already had to add knobs to the windows in CoS 2 to signify that they are openable. That was silly of me to forget. I'll put that on the list.

    Another option is to leave the window slightly ajar. This shows, from a distance, that it is openable. Use the "open" spawnarg (set to '1'), along with 'start_rotate' or 'start_position' (depending on whether the window is a mover_door or mover_door_sliding). Give you total control over how open the window is.

  5. An excellent mission! Nice layout and architecture - exploring is rewarded. Wonderful set of interlocking stories, full of politics/factions/intrigue/corruption. Lots of opportunities for thieving (of course) and for doing good. 

    Spoiler

    Played on medium difficulty. 3:45 to complete main objectives, 6075 loot, plus six of the optional objectives (Clara, Reliquary, Cosimo's letter, Adolfo, Carlo's statue, rats). Only got 2 of the secrets (because I suck at secrets). Later I'll go back and look for additional objectives and secrets. I did not do the 'challenge' objectives, and I likely wont, because I'm not good enough 🤪

    No real problems running it. Only noticed one layout glitch - right across from the starting point there are 3 package cubes, and they are floating above the ground a bit. That was the only thing I did a screen grab of.

    Thank you, Bienie!

  6. 54 minutes ago, nbohr1more said:

    Please delete your tdm_base01.pk4, any glprogs folders, and your darkmod executable then run tdm_update.

     

    Thanks, that solved it - I did as you suggested, and set image_useNormalCompression back to 1, and now reflections look good. So I guess I didn't have a clean release after all. 

    In general, are the steps you listed a good idea for getting a clean release? So, if I run into strange behavior, is it best to do those steps first to see if that resolves the issue?

  7. 10 hours ago, nbohr1more said:

     

    This looks like what happens if you enable RGTC. Is image_useNormalCompression set to 1 ?

    (RGTC is fixed in SVN \ 2.09 )

    image_useNormalCompression is set to 1 (I am running 2.08). If I change it to 2, the reflections look good.

  8. I'm seeing some weirdness in the 2.08 final regarding reflections. I've seen it in two different missions that I'm beta testing. Here is an example in HHTLC, in 2.07 it looks like this, a nice mild reflection (the plant pot):

    207.thumb.jpg.cdee1a05776a3fc66aab7be9e863d93d.jpg

    But in 2.08 the reflection is wonky:

    208.thumb.jpg.8085199e4d87e678130afadaee7b399a.jpg

    Same graphic settings. I deleted the darkmod.cfg, just to see if that made a difference - nope. I saw this problem in another FM too.

    Is anyone else seeing this?

  9. 29 minutes ago, Dragofer said:

    Is there some easy way to check by script whether an AI is unconscious? I've seen people around here using something like IS_UNCONSCIOUS, if I remember correctly, but as far as I'm aware those all-capitals words are only available in coding, not in Doomscript.

    AI_KNOCKEDOUT

    EDIT:

    as in

    ai guard = $atdm_ai_builder_guard_lesser_1;
    if (guard.AI_KNOCKEDOUT)
        {
        }

    Edit 2:

    One more thing, if you knock out an AI and then kill him, I think AI_KNOCKEDOUT is still true. So if you want to check that an AI is knocked out but not dead use:

    if (guard.AI_KNOCKEDOUT && !guard.AI_DEAD)

     

    • Thanks 1
  10. On 7/2/2020 at 4:04 PM, Dragofer said:

    You'd want to add 2 extra responses to the flame: one towards water and one towards fire, both have effects to trigger the trigger_hurt, deactivate the response to their own element and activate the response to the other element. And let the response to fire start inactive at map start. If that doesn't work you may need to change the effects to call a script.

    I gave that a try, and it didn't work. The reason: the flame already has a response to water (and fire) in its base class, and those inherited responses already do the appropriate deactivation. So adding a response of the same type doesn't work, since that type was deactivated by the existing response.

    However, there is a solution, and it's pretty simple. The existing (inherited) responses on flames call script functions (response_extinguish and response_ignite) in tdm_lights.script. Those methods both activate all of the targets on the flame. So all I have to do is set this spawnarg on the flame: "target" "trigger_hurt_1" (or whatever my trigger_hurt entity is called). That toggles the trigger_hurt off/on as appropriate. Easy peasy.

    • Like 1
  11. I've got a flame, say a campfire. I want the player to take damage if they stand in the middle of it, so I create a trigger_hurt above the flame. That works fine. But if you douse the flame with a water arrow, I want to turn off the trigger_hurt (and likewise, if it's relit with a fire arrow, turn the trigger_hurt back on). How do I do that? 

  12. This is how I've gotten door locking to work, using scripting.

    Write a script function that locks the door, something like

    void lockMyDoor()
    {
        $myDoor.Lock();
    }

    where 'myDoor' is the name of your door entity.

    Then on your atdm:target_call_scriptfunction you need a spawnarg "call" "lockMyDoor" (I've always used lowercase "call").

     

    Edit - fixed typo in the spawnarg

    • Like 3
  13. The FM that I'm creating uses the getMissionStatistic() script function, to gather info about how stealthy the player has been at a certain point in the mission. While testing, I've seen some strange results. What I think I'm seeing is that various stealth counters don't get incremented if a non-combat civilian sees you. Specifically:

    sys.getMissionStatistic("numberTimesPlayerSeen") 
    sys.getMissionStatistic("sightingScore")
    sys.getMissionStatistic("stealthScore")

    do not increase if a civilian sees you and runs away.

    I created a simple test map (attached). When it starts, the noblewoman has her back to you. Walk around so that she can see you - she will run to the flee point at the other end of the room. Now go frob the stone pillar - that will display various mission statistics. Note that numberTimesPlayerSeen, sightingScore, and stealthScore are all zero. 

    Run the test again, and this time sneak up behind her and bump into her before she sees you. She'll flee again, and this time numberTimesPlayerSeen is 1 (and sightingScore and steathScore are 5). That seems appropriate.

    Replace her with an armed guard, and he will immediately chase you, and numberTimesPlayerSeen is 1.

    Are these results expected? I would think that if you went around being seen by civilians and making them panic and run away, those stealth statistics shouldn't remain at 0. 

    test2.pk4

  14. 5 minutes ago, peter_spy said:

      Asking devs to brute force the event limit was a perfect example of being clueless in that regard.

    Which is exactly why I wrote "I'll sit back now and let the real TDM developers tell me why I'm wrong" after suggesting that. I was admitting that I was clueless. I also spent several hours trying to recreate the problem on two separate missions (turns out it was two separate issues). I've learned my lesson - just recreate the problem and hand it off, don't try to figure it out. 

    • Like 1
    • Thanks 1
  15. Another data point. I grabbed the save game from The Painter's Wife, and I was able to recreate the error ("Game Error. Event Overflow. Possible infinite loop in script"). I then ran my custom version of the DM exe that doubles the event limits. The error still happens. That indicates that this problem really is an infinite loop, and supports stgatilov's contention that upping the limit won't do any good.

    On the other hand, the crash in Hidden Hands goes away when I double MAX_EVENTS.

    Maybe these are two separate issues. Both errors happen in the event code, but in different places.

    • Like 1
  16. [Forgive me if this is the wrong place for this discussion.]
     
    I've been beta testing two new FMs: JackFarmer's Hidden Hands: The Last Citadel, and The Painter's Wife. They are both large missions. In each mission, testers have run into a problem related to event limits. (Note: all of my testing is has been done on the most recent 2.08 beta).
     
    1) In HH:TLC, at some point in the mission TDM crashes. There is no "The DarkMod.exe has stopped working" dialog - the process just disappears. One other beta tester reported a CTD as well. In addition, JackFarmer indicated that he had seen this error occasionally during his testing. 
     
    I set logging levels and found this in qconsole.txt: "Recursive fatal error!". I tried to debug this issue further by building a debug version of the executable and setting break points in Visual Studio. Eventually I was able to get the error message to log: 
     
    idEvent::Alloc : No more free events
     
    (I posted the details in this topic: https://forums.thedarkmod.com/index.php?/topic/20404-beta-testing-hidden-hands-the-lost-citadel/&do=findComment&comment=447958). From what I can tell, reading the code, this happens because we have exceeded MAX_EVENTS, which is currently 10240:
     
    #define MAX_EVENTS (10<<10)
     
    2) In TPW, I got this error:
    Untitled-1.thumb.jpg.728de3f78f29494ecde7202bb3302d30.jpg
     
    [In case the graphic isn't readable, the dialog says this "Game Error. Event Overflow. Possible infinite loop in script."]
     
    The FM developers have also seen this issue during development and testing of the mission. The C++ code indicates that this error occurs because the number of events exceed MAX_EVENTSPERFRAME, which is also 10240.
     
    It certainly could be that there are bugs in these missions, that they are either inefficient or have a loop somewhere that is causing these problems. But I'd like to entertain the possibility that these large missions are simply pushing the boundaries of the event limits. I'm wondering if the event limit should be increased (that is, increase the value of constants MAX_EVENTS and MAX_EVENTSPERFRAME). I understand that there may be consequences of doing this - at a minimum, presumably, the DM exe might consume more memory. 
     
     
    I just did a test: I had a save file from HH:TLC that always crashed on 2.08 -  after loading the save, if I just waited for a couple of minutes, the CTD happens every time. I downloaded the source code matching the current 2.08 beta 5 (SVN 8735). I built the release version and tried again - again, the same CTD happened within a few minutes. I then modified the code to double MAX_EVENTS and  MAX_EVENTSPERFRAME, to 20480. Those are the only two changes I made. I rebuilt the Release version of the executable, ran it, and loaded that same save. This time, TDM did not crash.
     
    I acknowledge that this is a rather brute force fix. I'm not suggesting that 20480 is the best size to use. But, to me, it looks like there are a couple of large missions that are pushing up against the event limit. Perhaps it is time to consider bumping up this limit, as part of 2.08?
     
    I'll sit back now and let the real TDM developers tell me why I'm wrong 😉
     
     
     
    • Like 4
    • Confused 1
  17. 2 hours ago, Bienie said:

    Changing it to remove() instead gave me an error called "too many parameters"... I even tried to have it just do it once and it was still too many parameters 😕

    Sorry, I was wrong about remove(); I don't think it works for inventory items? But I have had success with

    $player1.replaceInvItem($bienie_custom_item_part1, $null_entity);

    In my Heart of St. Mattis mission, you collect 3 key fragments and then they magically get combined into a special key. My script used replaceInvItem to remove the fragments from inventory.

    I know this didn't work for you. One thing I noticed, the inventory items I'm getting rid of are non-droppable. Spawnarg "inv_droppable" = 0. Maybe that's a requirement? Anyway, try setting that on your bienie_custom_item_partN objects, see if that helps.

  18. 2 hours ago, Bienie said:

    Thanks for that script, though it seems there is a problem. When it runs it gives me the error:  Entity not found for event 'replaceInvItem'. Terminating thread. I've made sure that the items are correctly named and correlate to the script (the objective ticks so it's not a mistype). edit: could this be another instance of the "items changing name when they stack in the inventory" bug?

    If this is even going to be an objective I keep though I have to also figure out the second part of it. I need the item that is given to the player to teleport a specific AI in front of the player when it is "used", i.e. similar to using a key on a door or drinking a potion. I looked at using the stim/response system, but the teleport function there seems to only allow for teleporting to fixed locations? Basically there is no option for "relative to player" only "relative to origin of object being teleported". Also trying to make the stim/response system recognize the player "using" an item seems to be a problem? Couldn't find an appropriate stim category, as "frob" did nothing. Thoughts / Ideas?

    Try

    $bienie_custom_item_part1.remove();

    That removes the object completely (including from inventory). I've used this technique for getting rid of inventory items.

    • Like 1
×
×
  • Create New...