Page 2 of 3

Re: Threshold Of Pain: Special Edition

PostPosted: Mon May 19, 2014 5:02 pm
by Gez
Ed the Bat wrote:Speaking of maps, I saw that some of them use scripts that check for monsters by both species and TID. This means that custom monster replacement packs will break how many of these maps work.

Not necessarily. Direct replacements should work. Replacements with random spawners won't, unless you give the BOSSDEATH flag to all the spawner-spawned monsters.

Re: Threshold Of Pain: Special Edition

PostPosted: Mon May 19, 2014 5:30 pm
by Ed the Bat
scalliano wrote:...it runs the risk of breaking a number of scripts, at best leaving the player lagging behind waiting things out, and at worst, making the maps unbeatable. A good example is the aforementioned MAP06 blue key trick.

Ah, how disappointing... I was looking forward to showing a friend through the adventure.
Gez wrote:Not necessarily. Direct replacements should work.

Nope; scripts that use thingcount() and check for a class name will not know what to look for now.

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 20, 2014 12:17 am
by Machine-Reaper
scalliano wrote:Hold your horses there, Ed - the reason ToP doesn't support co-op is because it runs the risk of breaking a number of scripts, at best leaving the player lagging behind waiting things out, and at worst, making the maps unbeatable. A good example is the aforementioned MAP06 blue key trick.

Also, this mod was never really designed with compatibility with gameplay mods in mind. Making it so would involve total redesigns in places, and that's far too much work. Most gameplay mods are designed to run with vanilla/Boom maps, but this is a specific ZDoom episode. If authors want to create custom patches to make ToP function correctly with their mods, that's fine, but it's not for me to do.

Machine-Reaper wrote:can this be played with Brutal Doom?


Image


okay x_x

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 20, 2014 12:50 am
by Gez
Ed the Bat wrote:Nope; scripts that use thingcount() and check for a class name will not know what to look for now.

It should.
Code: Select allExpand view
int DLevelScript::ThingCount (int type, int stringid, int tid, int tag)
{
   AActor *actor;
   const PClass *kind;
   int count = 0;
   bool replacemented = false;

   if (type > 0)
   {
      kind = P_GetSpawnableType(type);
      if (kind == NULL)
         return 0;
   }
   else if (stringid >= 0)
   {
      const char *type_name = FBehavior::StaticLookupString (stringid);
      if (type_name == NULL)
         return 0;

      kind = PClass::FindClass (type_name);
      if (kind == NULL || kind->ActorInfo == NULL)
         return 0;

   }
   else
   {
      kind = NULL;
   }

do_count:
   if (tid)
   {
      FActorIterator iterator (tid);
      while ( (actor = iterator.Next ()) )
      {
         if (actor->health > 0 &&
            (kind == NULL || actor->IsA (kind)))
         {
            if (actor->Sector->tag == tag || tag == -1)
            {
               // Don't count items in somebody's inventory
               if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) ||
                  static_cast<AInventory *>(actor)->Owner == NULL)
               {
                  count++;
               }
            }
         }
      }
   }
   else
   {
      TThinkerIterator<AActor> iterator;
      while ( (actor = iterator.Next ()) )
      {
         if (actor->health > 0 &&
            (kind == NULL || actor->IsA (kind)))
         {
            if (actor->Sector->tag == tag || tag == -1)
            {
               // Don't count items in somebody's inventory
               if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) ||
                  static_cast<AInventory *>(actor)->Owner == NULL)
               {
                  count++;
               }
            }
         }
      }
   }
   if (!replacemented && kind != NULL)
   {
      // Again, with decorate replacements
      replacemented = true;
      PClass *newkind = kind->GetReplacement();
      if (newkind != kind)
      {
         kind = newkind;
         goto do_count;
      }
   }
   return count;
}

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 20, 2014 12:53 am
by Ed the Bat
Just ran a test to double-check what I've experienced, and sure enough, you are correct as usual. It seems I've been completely mistaken this entire time. My apologies. On the positive, I'm happy to know the engine is this flexible about this.

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 20, 2014 9:53 am
by scalliano
I feel an update to Shuffle coming on ...

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 20, 2014 12:07 pm
by Average
scalliano wrote:I feel an update to Shuffle coming on ...


That would be cool. :)

Re: Threshold Of Pain: Special Edition

PostPosted: Wed May 21, 2014 3:20 pm
by phydeaux72
OS: Windows 7 (NT 6.1) Build 7601
Service Pack 1
M_LoadDefaults: Load system defaults.
W_Init: Init WADfiles.
adding C:/Program Files (x86)/Games/gzdoom/gzdoom.pk3, 583 lumps
adding c:/progra~2/games/gzdoom/iwads/doom2.wad, 2919 lumps
adding C:/Users/phydeaux72/AppData/Local/Temp/Temp1_scl_tops.zip/scl_tops.wad, 2714 lumps
I_Init: Setting up machine state.
CPU Speed: 1829 MHz
CPU Vendor ID: GenuineIntel
Name: Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz
Family 6, Model 15, Stepping 13
Features: MMX SSE SSE2 SSE3 SSSE3
I_InitSound: Initializing FMOD
FMOD Sound System, copyright © Firelight Technologies Pty, Ltd., 1994-2009.
Loaded FMOD version 4.26.27
V_Init: allocate screen.
S_Init: Setting up sound.
ST_Init: Init startup screen.
Checking cmd-line parameters...
S_InitData: Load sound definitions.
G_ParseMapInfo: Load map definitions.
Texman.Init: Init texture manager.
ParseTeamInfo: Load team definitions.
LoadActors: Load actor definitions.

Execution could not continue.

Script error, "scl_tops.wad:DECORATE" line 369:
Unknown render style 'Subtract'


Any suggestions here??

Re: Threshold Of Pain: Special Edition

PostPosted: Wed May 21, 2014 7:30 pm
by Ed the Bat

Re: Threshold Of Pain: Special Edition

PostPosted: Thu May 22, 2014 12:55 am
by Patriot1776
Also, this mod was never really designed with compatibility with gameplay mods in mind. Making it so would involve total redesigns in places, and that's far too much work. Most gameplay mods are designed to run with vanilla/Boom maps, but this is a specific ZDoom episode. If authors want to create custom patches to make ToP function correctly with their mods, that's fine, but it's not for me to do.


Darn it, but I gotta have my reloading weapons and ejecting shellcasings. I'll try it with Weapons of Saturn, one of the few weapons mods I have that change the weapons and weapons alone, because it adds to the immersion immensely hearing shellcasings hitting the floor and having to reload my weapons makes me think more tactically and not be prone to try stupid things in maps.

Re: Threshold Of Pain: Special Edition

PostPosted: Thu May 22, 2014 3:48 am
by Average
I've started playing through again using the Simplistic Gore mod. It works really well (so far!) and really does add a little something (blood :P ) to the game. I recommend it. :)

Re: Threshold Of Pain: Special Edition

PostPosted: Thu May 22, 2014 10:28 am
by Cardboard Marty
Not to cross promote, but I'm planning on doing a patch so you can play this with The Space Pirate, so eventually there will be that!

Re: Threshold Of Pain: Special Edition

PostPosted: Thu May 22, 2014 5:57 pm
by Doomguy5th
Machine-Reaper wrote:can this be played with Brutal Doom?


#FACEPALM... Why not try Weapons of Saturn with this WAD.

Re: Threshold Of Pain: Special Edition

PostPosted: Mon May 26, 2014 3:55 pm
by Machine-Reaper
DoomCraft wrote:
Machine-Reaper wrote:can this be played with Brutal Doom?


#FACEPALM... Why not try Weapons of Saturn with this WAD.


Cause I wana play it with brutal doom that's why xD

Re: Threshold Of Pain: Special Edition

PostPosted: Tue May 27, 2014 8:58 am
by Patriot1776
You gotta be willing to write your own compatibility patch then, and that means lots and LOTS of code checking and reworking, as there are LOTS of scripted events in 'ToP:SE' that depend on the deaths of the pre-defined enemies to trigger them. Even adapting the Brutalized enemies to trigger said scripts could cause all sorts of bugs and game breakers because of spawning of the various actors that constitute the gibs. 'Weapons of Saturn' can be much more easily be adapted since its much lighter an addon and the only real editing you need to do is remove the stock player sounds it uses and add in the Unmaker to Slot 7 in KEYCONF. Backup your original copy of 'Weapons of Saturn' of course before you do that though.