I've created a DML file to implement most of the changes suggested in this thread. The things that have the most effect on gameplay are listed at the start to make it easier to look through them and decide if you want them or not.
The first set of changes make it possible to throw the kitchen jar objects like in T1, but it may create too much frob clutter for the player, and that may be why LGS removed that ability for T2.
The next thing is the NoticesPlayerBumps being added to all AI. I think this adds a nice further challenge and tension to gameplay, but if you're a bit of a softie you can remove it.
I think the alarm sounds need to be stronger for longer, but you may want to try different values if it seems a bit overbearing.
I prefer barrels to be immovable and cuboid, but that won't be to everyone's taste, so this DML file creates two immovable child archetypes for the large and small varieties, while leaving the originals intact. These new ones cannot be broken up by damage.
BashStims have been added to elemental arrows so they cause an AI reaction but no damage.
Here is the DML text if anyone wants to make suggestions or test it (just save it as a file with a 'DML' extension and run it from Dromed (File > Load DbMod):
Code:
DML1
//Changes taken from here: https://www.ttlg.com/forums/showthread.php?t=98522
////The first section is for things that each author will most likely
////want to review for gameplay reasons
//Throw jars like in Thief 1
+ObjProp "Jar" "FrobInfo"
{
"World Action" "Move"
"Inv Action" "Move"
}
+ObjProp "Jar" "physcontrol"
{
"Controls Active" ""
}
+ObjProp "Jar" "phystype"
{
"Type" "Sphere"
}
//AI
ObjProp "Creature" "scripts"
{
"Script 2" "NoticesPlayerBumps"
}
//Alarm sounds maintain full volume over a greater distance
+ObjProp "DEVICE_ALARM" "schattfac" = 3
//Immovable Barrel physics - easier to mantle, pysics don't get lost if too close to wall, barrels cannot be pushed
CreateArch "Barrel 0" "Barrel0_Solid"
+ObjProp "Barrel0_Solid" "physcontrol"
{
"Controls Active" "Location, Rotation"
}
ObjProp "Barrel0_Solid" "phystype"
{
"Type" "OBB"
}
//Cast a shadow. Runtime Object Shadow prop needed to affect the lightgem...
//but not used here - author should set it when appropriate
+ObjProp "Barrel0_Solid" "immobile" = TRUE
+ObjProp "Barrel0_Solid" "slayresult"
{
"Effect" "No Effect"
}
+ObjProp "Barrel0_Solid" "class tags"
{
"1: Tags" ""
}
+ObjProp "Barrel0_Solid" "ai_objavoid"
{
"Flags" "Block pathfind"
}
+ObjProp "Barrel0_Solid" "ai_objpathable" = TRUE
//Small solid barrel
CreateArch "Barrel0_Solid" "SmalBarrel0_Solid"
+ObjProp "SmalBarrel0_Solid" "modelname" = "barrela"
//Elemental arrows cause AI reaction but no damage, did not work consistently in testing
+StimSource "water" "BashStim"
{
"Intensity" 0
"Propagator" "Contact"
{
"Shape"
{
"Contact Types" "Collision"
"Velocity Coeff" 0.01 //copied this from noise arrow stim
}
}
}
+StimSource "EarthArrow" "BashStim"
{
"Intensity" 0
"Propagator" "Contact"
{
"Shape"
{
"Contact Types" "Collision"
"Velocity Coeff" 0.01 //copied this from noise arrow stim
}
}
}
+StimSource "GasArrow" "BashStim"
{
"Intensity" 0
"Propagator" "Contact"
{
"Shape"
{
"Contact Types" "Collision"
"Velocity Coeff" 0.01 //copied this from noise arrow stim
}
}
}
+StimSource "VineArrow" "BashStim"
{
"Intensity" 0
"Propagator" "Contact"
{
"Shape"
{
"Contact Types" "Collision"
"Velocity Coeff" 0.01 //copied this from noise arrow stim
}
}
}
//Vine Arrow should not inherit PokeStim. Move this from RopeyArrow to just the RopeArrow
-StimSource "RopeyArrow" "PokeStim"
+StimSource "RopeArrow" "PokeStim"
{
"Intensity" 1
"Propagator" "Contact"
{
"Shape"
{
"Contact Types" "Collision"
"Velocity Coeff" 0.08 //same value that was on RopeyArrow
}
}
}
//Vine arrows should attach to wood - credit to qolelis
ObjProp "MatWood" "canattach"
{
"Flags" "Rope, Vine"
}
//Same for these two:
ObjProp "MatCarpet" "canattach"
{
"Flags" "Rope, Vine"
}
ObjProp "MatVegetation" "canattach"
{
"Flags" "Rope, Vine"
}
//Widen the cone for spotlights (existing spotlights affected upon relighting the mission)
ObjProp "HangingSpot" "spotlight" = 15, 60, 0
ObjProp "HangSpotFlush" "spotlight" = 15, 60, 0
//Fire arrow colour explosion, thanks to NV
+ObjProp "expcorona" "lightcolor"
{
"hue" 0.1
"saturation" 0.75
}
//Also apply this to fire arrow itself
+ObjProp "firearr" "lightcolor"
{
"hue" 0.1
"saturation" 0.75
}
//Make them both brighter, also compensates for effect of colour change
ObjProp "expcorona" "selflit" = 220
ObjProp "firearr" "selflit" = 120
//Stop robot corpese being broken up by broadheads - credit to Stan_The_Thief
+Receptron "RobotCorpses" "PokeStim"
{
"Max" None
"Effect" "Abort"
}
////This sections is for bug fixing
//Skull throw correction - Eshaktaar
ObjProp "Skull" "FrobInfo"
{
"Tool Action" ""
}
//Helps when object texutres include transparency, may depend on image format
-ObjProp "Banner" "renderalpha"
+ObjProp "ExBanner" "renderalpha" = 1
-ObjProp "Fence" "renderalpha"
+ObjProp "Railing" "renderalpha" = 1
+ObjProp "VineRail" "renderalpha" = 1
+ObjProp "catwrail12x3" "renderalpha" = 1
+ObjProp "Catwpiece1" "renderalpha" = 1
+ObjProp "Catwpiece2" "renderalpha" = 1
+ObjProp "Catwpiece3" "renderalpha" = 1
+ObjProp "catwrail4x3" "renderalpha" = 1
+ObjProp "OfficeChair" "renderalpha" = 1
+ObjProp "CoveredChairs" "renderalpha" = 1
//Red warehouse door
+ObjProp "RedDoor" "rotdoor"
{
"Blocks Vision?" FALSE
}
-ObjProp "RedDoor" "renderalpha"
//Containers
ObjProp "Safe" "cfgtweqjoints"
{
"Joint1AnimC" "Sim"
}
ObjProp "VicHopeChest" "cfgtweqjoints"
{
"Joint1AnimC" "Sim"
}
ObjProp "LC_Chest" "cfgtweqjoints"
{
"Joint1AnimC" "Sim"
}
//MoneyBox sounds were doubling due to unnecessary script property
-ObjProp "MoneyBox" "scripts"
//Prevent undead from "drowning" (all values are 0 when added, no need for config)
+ObjProp "Undead" "breathconfig"
{
}
//AI have 'head' as vision joint - thanks to NV
//But not robots - thanks to Stan_The_Thief
+ObjProp "Undead" "ai_visjoint"
{
"joint" "Head"
}
+ObjProp "Beast" "ai_visjoint"
{
"joint" "Head"
}
+ObjProp "Animal" "ai_visjoint"
{
"joint" "Head"
}
//Chair materials
+MetaProp "RamSofaChair" "MatCarpet"
+MetaProp "CoveredChairs" "MatCarpet"
+MetaProp "MechCouch" "MatCarpet"
+MetaProp "VictorianChairs" "MatCarpet"
+MetaProp "VicSmallDeskChair" "MatWood" //exception to the rule
+MetaProp "RamSofa" "MatCarpet"
//Beds, most already carpet
+MetaProp "bedpostphys" "MatWood"
//LC bed is stone, looks like a pedestal for displaying bodies lying in state
+MetaProp "LC_Bed" "MatStone"
-MetaProp "LC_Headrest" "MatCarpet"
+MetaProp "LC_Headrest" "MatMetal"
//Kithen object materials
+MetaProp "Pan" "MatMetal"
+MetaProp "Knife" "MatMetal"
+MetaProp "Butcher Knife" "MatMetal"
+MetaProp "Jar" "MatCeramic"
//Objects blocking AI vision
+ObjProp "Drapes" "ai_blkvis" = TRUE
//All doors, with exceptions for doors with large windows
+ObjProp "Door" "ai_blkvis" = TRUE
+ObjProp "FrenchDoor" "ai_blkvis" = FALSE
+ObjProp "CemetaryGate" "ai_blkvis" = FALSE
+ObjProp "whd4x8-3" "ai_blkvis" = FALSE
+ObjProp "Portcullis" "ai_blkvis" = FALSE
+ObjProp "CloisterGate2" "ai_blkvis" = FALSE
//Gauges should not be fully lit
+ObjProp "Gauge" "selfillum" = 0
+ObjProp "Transformer02" "selfillum" = 0
+ObjProp "Transformer01" "selfillum" = 0
+ObjProp "coil02" "selfillum" = 0
+ObjProp "coil03" "selfillum" = 0
//Moss Arrow Fix (credit to Winter Cat)
ObjProp "Mosslauncher" "cfgtweqemit"
{
"Rate" 400
"CurveC" "JitterLow"
}
ObjProp "mosslump" "scale"
{
"" 1, 1, 1.5
}
-ObjProp "mosslump" "cfgtweqemit"
-ObjProp "mosslump" "sttweqemit"
ObjProp "mosspad" "sttweqemit"
{
"AnimS" "On"
"Cur Time" 0
}
ObjProp "mosspad" "cfgtweqemit"
{
"Halt" "Remove Prop"
"Rate" 200
"Velocity" 0, 0, 9
"CurveC" "JitterHi"
}
-ObjProp "moss0.5" "scale"
ObjProp "mossspore" "PhysInitVel" = 5, 0, 10
-ObjProp "lilmossspore" "PhysInitVel"
//Fix for fire arrow (3 sets of fletching feathers rather than 2)
//Note Winter Cat origainally had a fix for fire particles, but these seem okay in NewDark
ObjProp "firearr" "modelname" = "arrowfir"
//Vic light swtich fix - credit to Zontik
ObjProp "VicLightSwitch" "jointpos"
{
"Joint 1" -0.06
"Joint 2" -0.06
}
ObjProp "VicLightSwitch" "cfgtweqjoints"
{
" rate-low-high" 0.02, -0.065, 0
" rate-low-high2" 0.02, -0.065, 0
}
//Default light radius of 60 for everything
//Static light props
ObjProp "lanterns" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "WallSpotLight" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "MineLight" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "OldElecWallLight" "light"
{
"radius (0 for infinite)" 60 //not sure if needed for brightness of 0 but does no harm
}
ObjProp "OldHangElecLight" "light"
{
"radius (0 for infinite)" 60 //not sure if needed for brightness of 0 but does no harm
}
ObjProp "HangSpotFlush" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "HangingSpot" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "MechHangLamp" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "OldHangingShort" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "Streetlamp2" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "OldStreetlamp2" "light"
{
"radius (0 for infinite)" 60 //not sure if needed for brightness of 0 but does no harm
}
ObjProp "Streetlamp" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "SpotStreetlamp" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "OldSpotStreetlamp" "light"
{
"radius (0 for infinite)" 60 //not sure if needed for brightness of 0 but does no harm
}
ObjProp "TheatricalSpot" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "SmallTabLamp" "light"
{
"radius (0 for infinite)" 30
}
ObjProp "MechFloorLamp" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "MechSpotLight" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "litemush_durabl" "light"
{
"radius (0 for infinite)" 40
}
ObjProp "VicGlowGas" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "SpotLightPoint" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "SpotLightPoint" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "barberpole" "light"
{
"radius (0 for infinite)" 40
}
ObjProp "CollectorTower" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "GlassChandelier" "light"
{
"radius (0 for infinite)" 60
}
ObjProp "PaganLight" "light"
{
"radius (0 for infinite)" 60
}
//Anim light props
ObjProp "litemush_fragil" "animlight"
{
"radius (0 for infinite)" 40
}
ObjProp "Flame" "animlight"
{
"radius (0 for infinite)" 60
}
ObjProp "DynFlame" "animlight"
{
"radius (0 for infinite)" 60
}
ObjProp "WindowShade" "animlight"
{
"radius (0 for infinite)" 60
}
ObjProp "Extinguishable" "animlight"
{
"radius (0 for infinite)" 60
}
ObjProp "MechTorch" "animlight"
{
"radius (0 for infinite)" 60
}
ObjProp "LCLite" "animlight"
{
"radius (0 for infinite)" 60
}
//Physics models
+ObjProp "BigTable" "PhysDims"
{
"Offset 1" 0, 0, 1.2
"Size" 12.2, 6, 0.57679
}
The code seems perfectly safe to run more than once - metaprops won't get added more than once, Dromed safely skips attempts to add archetypes that already exist, or remove properties that have already been removed etc.