View Issue Details

IDProjectCategoryView StatusLast Update
0004615The Dark ModSaving/Loadingpublic21.02.2021 10:54
Reporterduzenko Assigned Toduzenko  
PrioritynormalSeveritynormalReproducibilityalways
Status resolvedResolutionfixed 
Product VersionSVN 
Target VersionTDM 2.06Fixed in VersionTDM 2.06 
Summary0004615: Remote camera lost when saving\loading
DescriptionThe engine supports a so called "remote camera subview" and even though it has not been used for a while Neons has expressed interest in using it in one of his maps.
The first problem that I see with it is that it does not sustain the quick/load test.

Steps To Reproduce1. Start the attached map
2. See the remote camera 'kinda' working
3. Quick save
4. Load quick save
5. Camera is dead.
TagsNo tags attached.

Relationships

related to 0005528 resolvedDragofer Improvements to security cameras 
parent of 0004939 confirmedduzenko Wrong mirror reflection on model - bc_teatray 
related to 0004296 closedduzenko Glitch with remote render 
related to 0004632 closedduzenko Mirror is black: no reflection (Inn Business) 
related to 0004667 resolved Mirrors are too bright 
related to 0005028 closedstgatilov Crash on loading game in March of Rahena (EV_UpdateCameraTarget) 
Not all the children of this issue are yet resolved or closed.

Activities

duzenko

duzenko

08.09.2017 18:21

developer   ~0009183

I was able to go as far as idEntity::Event_UpdateCameraTarget

It seems to be called from the script subsystem (?) which I have no knowledge about.
duzenko

duzenko

08.09.2017 18:27

developer   ~0009184

Last edited: 08.09.2017 18:27

When loading the quick save idSecurityCamera::Restore is called, but idSecurityCamera::Spawn is not.
Further debugging is blocked by missing stacktrace.

grayman

grayman

17.09.2017 15:33

viewer   ~0009270

Where's the attached map?
duzenko

duzenko

17.09.2017 18:23

developer   ~0009273

https://drive.google.com/file/d/0B-fuuLxkbWRZSnEwVmpfa0hjams/view?usp=sharing
grayman

grayman

17.09.2017 20:25

viewer   ~0009276

Last edited: 17.09.2017 20:25

The cameras are working after the loadgame. I can tell because they emit a beep every now and then (missing sound).

The problem looks like it's in the func_static displaying the view. It needs to be kick-started.

grayman

grayman

17.09.2017 21:35

viewer   ~0009280

Camera view from the func_static is now kick-started after reloading.

Working on the 4 missing camera sounds.

Also, the camera doesn't stop moving when it spots the player. (I don't think it's spotting me and I have to walk through it. Once it spots me, the rest of what it's supposed to do looks okay.)
grayman

grayman

18.09.2017 02:02

viewer   ~0009285

Grabbed D3 security camera sounds to make sure the sound code worked. It does. Need to replace the sounds.

Fixed a math statement that was bass-ackwards.

Turned spotlight on and it doesn't look right. Need to find out what it's _supposed_ to look like.
duzenko

duzenko

18.09.2017 09:22

developer   ~0009286

Last edited: 18.09.2017 09:24

Not in svn yet?
The way Neon wants it to work is static immovable camera, no need to react on anything.

grayman

grayman

18.09.2017 12:45

viewer   ~0009287

Not done yet.

I'll look at the spawnargs to see if setting them a certain way gives Neon what he wants. If not, I'll add a spawnarg that tells the camera to not move and to not react to the player. Since the sounds are related to moving and reacting, the camera would emit no sounds, either.
grayman

grayman

19.09.2017 14:09

viewer   ~0009298

Last edited: 19.09.2017 14:13

Needed to kickstart the remote camera after loading a savegame.

Other changes:
- Added “seePlayer” spawnarg, which can be turned off so the camera doesn’t care about seeing the player
- Camera wasn't seeing the player when it should.
- Added “rotate” spawnarg, which can be turned off for a stationary camera
- Fixed a line of timing code having to do with the sweep time
- Added the “camera gui” texture from Obs’ test pk4
- Added the 4 camera sounds. Used placeholder Doom3 sounds, and will replace them ASAP.
- Kill spotlight when the camera is destroyed.
TODO:
- When the camera is killed, it screws up the display on the screen.The screen should just go black.
- Replace Doom3 sounds.
- Figure out why the display screen is flipped horizontally, and correct that.
- When there are multiple cameras and screens, moving away from one screen can cause that screen to start displaying an image from a different, closer, camera.
- Not sure I like the spotlight attached to the camera when it's in use.

Rev. 7154:

Entity.cpp
SecurityCamera.cpp
SecurityCamera.h

Rev. 14933:

func.def
tdm_security_camera.mtr
tdm_sfx_machinery.sndshd
security_camera_activate.ogg
security_camera_end.ogg
security_camera_sight.ogg
security_camera_moving.ogg

grayman

grayman

19.09.2017 14:14

viewer   ~0009299

Attached camera.map, which tests the camera changes.
grayman

grayman

19.09.2017 20:58

viewer  

camera.map (48,770 bytes)   
Version 2
// entity 0
{
"classname" "worldspawn"
"editor_drMapPos1" "145.117 609.786 279.045"
"editor_drMapAngle1" "-48 150.8 0"
"editor_drMapPos2" "414.798 255.441 -264.933"
"editor_drMapAngle2" "2.10002 84.5976 0"
"editor_drMapPos3" "-749.97 -1606.21 -470.066"
"editor_drMapAngle3" "-3.29998 6.59757 0"
"editor_drMapPos4" "1014.05 -953.679 -556.857"
"editor_drMapAngle4" "-10.2 355.498 0"
"editor_drMapPos5" "987.599 3513.79 -319.877"
"editor_drMapAngle5" "-61.1999 172.198 0"
"editor_drMapPos6" "-1032.5 -2840 739.5"
"editor_drMapAngle6" "-77.0999 175.798 0"
"editor_drMapPos7" "952.822 285.005 1366.04"
"editor_drMapAngle7" "-74.8 149.373 0"
"editor_drMapPos8" "976 424 320"
"editor_drMapAngle8" "-3 15.3467 0"
"editor_drMapPos9" "409.146 547.464 392.83"
"editor_drMapAngle9" "-16.8 284.947 0"
"editor_drLastCameraPos" "485.899 -83.0592 10.0908"
"editor_drLastCameraAngle" "-14.4 83.4 0"
// primitive 0
{
brushDef3
{
( 0 0 1 -136 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -544 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -384 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -136 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -136 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -544 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -72 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -384 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 1 64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -384 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 -72 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/cobblestones/blocks_mixedsize02_multicolour_dirty" 0 0 0
}
}
// primitive 5
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -16 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 6
{
brushDef3
{
( 0 0 1 -354 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 48.3125 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -544 ) ( ( 0.0625 0 15.6875 ) ( 0 0.0625 17.90625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 17.90625 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 224 ) ( ( 0.0625 0 48.3125 ) ( 0 0.0625 17.90625 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 30.59375 ) ( 0 0.0625 17.90625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 346 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 78.6875 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 7
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 48.3125 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -552 ) ( ( 0.0625 0 15.6875 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 15.6875 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 30.59375 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 544 ) ( ( 0.0625 0 113.3125 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 8
{
brushDef3
{
( 0 1 0 -544 ) ( ( 0.0625 0 15.6875 ) ( 0 0.0625 80.90625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 80.90625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 210 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 15.6875 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 224 ) ( ( 0.0625 0 47.8125 ) ( 0 0.0625 80.90625 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 30.59375 ) ( 0 0.0625 80.90625 ) ) "textures/common/caulk" 0 0 0
( 0 0 1 -218 ) ( ( 0.0625 0 33.40625 ) ( 0 0.0625 113.3125 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 9
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 110.53125 ) ( 0 0.0625 48.5 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 110.53125 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 110.53125 ) ( 0 0.0625 15.5 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 216 ) ( ( 0.0625 0 48.5 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 81.46875 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -224 ) ( ( 0.0625 0 78.5 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 10
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 34 ) ( 0 0.0625 113 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -544 ) ( ( 0.0625 0 15 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 34 ) ( 0 0.0625 15 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 224 ) ( ( 0.0625 0 113 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 168 ) ( ( 0.0625 0 30 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -176 ) ( ( 0.0625 0 34 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 11
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 34 ) ( 0 0.0625 40.5 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -544 ) ( ( 0.0625 0 23.5 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 34 ) ( 0 0.0625 23.5 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 224 ) ( ( 0.0625 0 40.5 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 304 ) ( ( 0.0625 0 30 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -312 ) ( ( 0.0625 0 34 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 12
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 38.90625 ) ( 0 0.0625 48.3125 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -464 ) ( ( 0.0625 0 15.6875 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 38.90625 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 38.90625 ) ( 0 0.0625 15.6875 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 25.09375 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 456 ) ( ( 0.0625 0 113.3125 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 13
{
brushDef3
{
( 0 0 1 -346 ) ( ( 0.0625 0 41.40625 ) ( 0 0.0625 48.3125 ) ) "textures/common/caulk" 0 0 0
( 0 1 0 -424 ) ( ( 0.0625 0 15.6875 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 1 0 0 -304 ) ( ( 0.0625 0 41.40625 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 0 -1 218 ) ( ( 0.0625 0 41.40625 ) ( 0 0.0625 15.6875 ) ) "textures/common/caulk" 0 0 0
( -1 0 0 176 ) ( ( 0.0625 0 22.59375 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
( 0 -1 0 416 ) ( ( 0.0625 0 113.3125 ) ( 0 0.0625 81.40625 ) ) "textures/common/caulk" 0 0 0
}
}
// primitive 14
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -136 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -544 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 352 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 15
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -552 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -384 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 544 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/cobblestones/blocks_mixedsize02_multicolour_dirty" 0 0 0
}
}
// primitive 16
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 344 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -352 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 17
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -344 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 136 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 18
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -544 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -392 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 384 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/cobblestones/cobblestones06_greenish_irregular" 0 0 0
( -1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 19
{
brushDef3
{
( 0 0 1 -128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 1 0 192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 1 0 0 -160 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( 0 -1 0 -256 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
( -1 0 0 128 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/stone/brick/blocks_brown" 0 0 0
}
}
// primitive 20
{
brushDef3
{
( 0 0 1 -16 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -48 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -544 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -32 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 40 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 472 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
}
// entity 1
{
"classname" "light"
"name" "ambient_world"
"_color" "0.07 0.07 0.07"
"light_center" "0 0 0"
"light_radius" "440 528 320"
"nodiffuse" "0"
"noshadows" "0"
"nospecular" "0"
"origin" "268 -292 104"
"parallel" "0"
"texture" "lights/ambientlightnfo"
}
// entity 2
{
"classname" "info_player_start"
"name" "info_player_start_1"
"angle" "90"
"origin" "32 -88 -64"
}
// entity 3
{
"classname" "func_securitycamera"
"name" "cam1"
"angle" "0"
"model" "models/darkmod/laboratory/bunsen_burner.ase"
"origin" "-32 104 32"
"spotLight" "1"
}
// entity 4
{
"classname" "func_securitycamera"
"name" "cam2"
"angle" "270"
"model" "models/darkmod/laboratory/bunsen_burner.ase"
"origin" "96 104 32"
}
// entity 5
{
"classname" "func_static"
"name" "func_static_1"
"model" "func_static_1"
"origin" "32 -20 8"
// primitive 0
{
brushDef3
{
( 0 0 1 -32 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -32 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -32 ) ( ( 0.0078125 0 255.8125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 0 1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -32 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -32 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 24 ) ( ( 0.0078125 0 255.8125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 0 1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -32 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -32 ) ( ( 0.0078125 0 255.8125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 0 1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -4 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -32 ) ( ( 0.0078125 0 255.8125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 0 1 0 -4 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 2 ) ( ( 0.0078125 0 255.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -24 ) ( ( 0.0078125 0 255.8125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 255.9375 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0.375 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -24 ) ( ( 0.0078125 0 0.1875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
}
// entity 6
{
"classname" "func_static"
"name" "func_static_2"
"cameraTarget" "cam1"
"model" "func_static_2"
"origin" "32 -20 8"
// primitive 0
{
patchDef2
{
"textures/darkmod/camera"
( 3 3 0 0 0 )
(
( ( 56 -20 32 0 0 ) ( 56 -20 8 0 0.5 ) ( 56 -20 -16 0 1 ) )
( ( 32 -20 32 0.5 0 ) ( 32 -20 8 0.5 0.5 ) ( 32 -20 -16 0.5 1 ) )
( ( 8 -20 32 1 0 ) ( 8 -20 8 1 0.5 ) ( 8 -20 -16 1 1 ) )
)
}
}
}
// entity 7
{
"classname" "target_setkeyval"
"name" "target_setkeyval_2"
"keyval" "cameraTarget;cam1"
"origin" "-40 -24 52"
"target0" "func_static_2"
}
// entity 8
{
"classname" "target_setkeyval"
"name" "target_setkeyval_3"
"keyval" "cameraTarget;cam2"
"origin" "100 -24 52"
"target0" "func_static_2"
}
// entity 9
{
"classname" "atdm:mover_button"
"name" "atdm_mover_button_1"
"model" "atdm_mover_button_1"
"origin" "4 -28 -20"
"target0" "target_setkeyval_2"
"translate" "0 1 0"
// primitive 0
{
brushDef3
{
( 0 0 1 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 0.375 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 1 0 -4 ) ( ( 0.015625 0 63.625 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 1 0 0 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 0 -1 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 63.625 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 -1 0 0 ) ( ( 0.015625 0 0.375 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( -1 0 0 -3 ) ( ( 0.015625 0 127.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
}
}
}
// entity 10
{
"classname" "atdm:mover_button"
"name" "atdm_mover_button_2"
"model" "atdm_mover_button_2"
"origin" "60 -28 -20"
"target0" "target_setkeyval_3"
"translate" "0 1 0"
// primitive 0
{
brushDef3
{
( 0 0 1 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 127.5 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 1 0 -4 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 1 0 0 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 0 -1 -3 ) ( ( 0.015625 0 64.5 ) ( 0 0.015625 64.515625 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( 0 -1 0 0 ) ( ( 0.015625 0 127.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
( -1 0 0 -3 ) ( ( 0.015625 0 127.5 ) ( 0 0.015625 0 ) ) "textures/darkmod/metal/flat/iron_rough" 0 0 0
}
}
}
// entity 11
{
"classname" "light"
"name" "light_1"
"_color" "0.208 0.208 0.208"
"light_center" "0 0 0"
"light_radius" "320 320 320"
"nodiffuse" "0"
"noshadows" "0"
"nospecular" "0"
"origin" "32 -152 104"
"parallel" "0"
}
// entity 12
{
"classname" "atdm:playertools_compass"
"name" "CompassEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "185 505.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 13
{
"classname" "atdm:playertools_lantern"
"name" "LanternEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "197 505.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 14
{
"classname" "atdm:playertools_spyglass"
"name" "SpyglassEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "207 505.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 15
{
"classname" "atdm:playertools_health_potion"
"name" "HealthPotionsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "223 505.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 16
{
"classname" "atdm:weapon_shortsword"
"name" "SwordEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "295 407.5 277.5"
"rotation" "0 1 0 -1 0 0 0 0 1"
}
// entity 17
{
"classname" "atdm:weapon_blackjack"
"name" "BlackjackEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "246.625 406.75 277.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 18
{
"classname" "atdm:playertools_breath_potion"
"name" "BreathPotionsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "235 505.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 19
{
"classname" "atdm:playertools_flashbomb"
"name" "FlashbombsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "187 407.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 20
{
"classname" "atdm:ammo_broadhead"
"name" "BroadheadsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "184 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 21
{
"classname" "atdm:ammo_broadhead"
"name" "BroadheadsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "184 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 22
{
"classname" "atdm:ammo_broadhead"
"name" "BroadheadsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "184 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 23
{
"classname" "atdm:ammo_firearrow"
"name" "FireArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "200 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 24
{
"classname" "atdm:ammo_firearrow"
"name" "FireArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "200 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 25
{
"classname" "atdm:ammo_firearrow"
"name" "FireArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "200 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 26
{
"classname" "atdm:ammo_gasarrow"
"name" "GasArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "216 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 27
{
"classname" "atdm:ammo_gasarrow"
"name" "GasArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "216 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 28
{
"classname" "atdm:ammo_gasarrow"
"name" "GasArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "216 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 29
{
"classname" "atdm:ammo_mossarrow"
"name" "MossArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "232 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 30
{
"classname" "atdm:ammo_mossarrow"
"name" "MossArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "232 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 31
{
"classname" "atdm:ammo_mossarrow"
"name" "MossArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "232 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 32
{
"classname" "atdm:ammo_noisemaker"
"name" "NoiseArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "248 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 33
{
"classname" "atdm:ammo_noisemaker"
"name" "NoiseArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "248 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 34
{
"classname" "atdm:ammo_noisemaker"
"name" "NoiseArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "248 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 35
{
"classname" "atdm:ammo_ropearrow"
"name" "RopeArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "264 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 36
{
"classname" "atdm:ammo_ropearrow"
"name" "RopeArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "264 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 37
{
"classname" "atdm:ammo_ropearrow"
"name" "RopeArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "264 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 38
{
"classname" "atdm:ammo_waterarrow"
"name" "WaterArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "296 328 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 39
{
"classname" "atdm:ammo_waterarrow"
"name" "WaterArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "296 280 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 40
{
"classname" "atdm:ammo_waterarrow"
"name" "WaterArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "296 232 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 41
{
"classname" "atdm:weapon_blackjack"
"name" "BlackjackHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "246.625 390.75 277.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 42
{
"classname" "atdm:weapon_blackjack"
"name" "BlackjackExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "246.625 374.75 277.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 43
{
"classname" "atdm:weapon_shortsword"
"name" "SwordHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "295 391.5 277.5"
"rotation" "0 1 0 -1 0 0 0 0 1"
}
// entity 44
{
"classname" "atdm:weapon_shortsword"
"name" "SwordExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "295 375.5 277.5"
"rotation" "0 1 0 -1 0 0 0 0 1"
}
// entity 45
{
"classname" "atdm:playertools_compass"
"name" "CompassHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "185 489.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 46
{
"classname" "atdm:playertools_compass"
"name" "CompassExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"origin" "185 473.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 47
{
"classname" "atdm:playertools_lantern"
"name" "LanternHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "197 489.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 48
{
"classname" "atdm:playertools_lantern"
"name" "LanternExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"origin" "197 473.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 49
{
"classname" "atdm:playertools_spyglass"
"name" "SpyglassHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "207 489.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 50
{
"classname" "atdm:playertools_spyglass"
"name" "SpyglassExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"origin" "207 473.5 326.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 51
{
"classname" "atdm:playertools_flashbomb"
"name" "FlashbombsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "187 391.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 52
{
"classname" "atdm:playertools_flashbomb"
"name" "FlashbombsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "187 375.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 53
{
"classname" "atdm:playertools_health_potion"
"name" "HealthPotionsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "223 489.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 54
{
"classname" "atdm:playertools_health_potion"
"name" "HealthPotionsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "223 473.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 55
{
"classname" "atdm:playertools_breath_potion"
"name" "BreathPotionsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "235 489.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 56
{
"classname" "atdm:playertools_breath_potion"
"name" "BreathPotionsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "235 473.5 301.5"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 57
{
"classname" "atdm:playertools_lockpick_snake"
"name" "LockpickSnakeEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "278 506 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 58
{
"classname" "atdm:playertools_lockpick_triangle"
"name" "LockpickTriangleEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "294 506 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 59
{
"classname" "atdm:playertools_mine"
"name" "MinesEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "218 408 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 60
{
"classname" "atdm:playertools_holywater"
"name" "HolyWatersEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "234 408 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 61
{
"classname" "atdm:playertools_flashmine"
"name" "FlashminesEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "202 408 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 62
{
"classname" "atdm:playertools_lockpick_snake"
"name" "LockpickSnakeHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "278 490 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 63
{
"classname" "atdm:playertools_lockpick_snake"
"name" "LockpickSnakeExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"origin" "278 474 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 64
{
"classname" "atdm:playertools_lockpick_triangle"
"name" "LockpickTriangleHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_map_start" "1"
"origin" "294 490 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 65
{
"classname" "atdm:playertools_lockpick_triangle"
"name" "LockpickTriangleExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_map_start" "1"
"origin" "294 474 298"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
}
// entity 66
{
"classname" "atdm:playertools_flashmine"
"name" "FlashminesHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "202 392 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 67
{
"classname" "atdm:playertools_flashmine"
"name" "FlashminesExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "202 376 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 68
{
"classname" "atdm:playertools_mine"
"name" "MinesHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "218 392 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 69
{
"classname" "atdm:playertools_mine"
"name" "MinesExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "218 376 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 70
{
"classname" "atdm:playertools_holywater"
"name" "HolyWatersHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_count" "10"
"inv_map_start" "1"
"origin" "234 392 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 71
{
"classname" "atdm:playertools_holywater"
"name" "HolyWatersExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_count" "10"
"inv_map_start" "1"
"origin" "234 376 298"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 72
{
"classname" "atdm:ammo_vinearrow"
"name" "VineArrowsEasy"
"diff_0_nospawn" "0"
"diff_1_nospawn" "1"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "280 329 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 73
{
"classname" "atdm:ammo_vinearrow"
"name" "VineArrowsHard"
"diff_0_nospawn" "1"
"diff_1_nospawn" "0"
"diff_2_nospawn" "1"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "280 281 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 74
{
"classname" "atdm:ammo_vinearrow"
"name" "VineArrowsExpert"
"diff_0_nospawn" "1"
"diff_1_nospawn" "1"
"diff_2_nospawn" "0"
"inv_ammo_amount" "30"
"inv_map_start" "1"
"inv_no_pickup_message" "1"
"origin" "280 233 258"
"rotation" "1 0 0 0 0 1 0 -1 0"
}
// entity 75
{
"classname" "func_securitycamera"
"name" "cam3"
"angle" "90"
"cameraTarget" "Cam3View"
"model" "models/darkmod/laboratory/bunsen_burner.ase"
"origin" "448 -296 32"
"rotate" "0"
"spotLight" "0"
}
// entity 76
{
"classname" "func_static"
"name" "func_static_3"
"model" "models/darkmod/furniture/tables/dining_table_small01.lwo"
"origin" "504 0 -46.509"
"rotation" "1 0 0 0 1 0 0 0 1"
}
// entity 77
{
"classname" "atdm:moveable_loot_religious_symbol"
"name" "atdm_moveable_loot_religious_symbol_1"
"origin" "504 -8 -23.8255"
"rotation" "0 -1 0 1 0 0 0 0 1"
}
// entity 78
{
"classname" "func_static"
"name" "func_static_5"
"model" "func_static_5"
"origin" "124 -224 8"
// primitive 0
{
brushDef3
{
( 0 0 1 -20 ) ( ( 0 0.0078125 255.0625 ) ( -0.0078125 0 254.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -4 ) ( ( 0.0078125 0 1.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -20 ) ( ( 0.0078125 0 255.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -4 ) ( ( 0.0078125 0 254.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -20 ) ( ( 0.0078125 0 0.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 12 ) ( ( 0 -0.0078125 255.0625 ) ( 0.0078125 0 1.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 1 0 0 -4 ) ( ( 0.0078125 0 1.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -20 ) ( ( 0.0078125 0 255.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -20 ) ( ( 0 -0.0078125 255.0625 ) ( 0.0078125 0 1.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -4 ) ( ( 0.0078125 0 254.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 0.0078125 255.0625 ) ( -0.0078125 0 254.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 12 ) ( ( 0.0078125 0 0.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 1 0 0 -4 ) ( ( 0.0078125 0 1.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -20 ) ( ( 0 -0.0078125 255.0625 ) ( 0.0078125 0 1.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -4 ) ( ( 0.0078125 0 254.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -20 ) ( ( 0.0078125 0 0.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -12 ) ( ( 0.0078125 0 255.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 12 ) ( ( 0 0.0078125 255.0625 ) ( -0.0078125 0 254.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 1 0 0 -4 ) ( ( 0.0078125 0 1.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -4 ) ( ( 0.0078125 0 254.5 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -20 ) ( ( 0.0078125 0 0.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 0.0078125 255.0625 ) ( -0.0078125 0 254.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -12 ) ( ( 0 -0.0078125 255.0625 ) ( 0.0078125 0 1.5 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 12 ) ( ( 0.0078125 0 255.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 1 0 0 -4 ) ( ( 0.0078125 0 1.5625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 2 ) ( ( 0.0078125 0 254.4375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -12 ) ( ( 0.0078125 0 0.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 0.0078125 255.0625 ) ( -0.0078125 0 254.4375 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -12 ) ( ( 0 -0.0078125 255.0625 ) ( 0.0078125 0 1.875 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -12 ) ( ( 0.0078125 0 255.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
}
// entity 79
{
"classname" "light"
"name" "light_2"
"_color" "0.208 0.208 0.208"
"light_center" "0 0 0"
"light_radius" "320 320 320"
"nodiffuse" "0"
"noshadows" "0"
"nospecular" "0"
"origin" "448 -72 104"
"parallel" "0"
}
// entity 80
{
"classname" "func_static"
"name" "func_static_4"
"cameraTarget" "Cam3View"
"model" "func_static_4"
"origin" "124 -224 8"
// primitive 0
{
patchDef2
{
"textures/darkmod/camera"
( 3 3 0 0 0 )
(
( ( 124 -236 20 0 0 ) ( 124 -236 8 0 0.5 ) ( 124 -236 -3.999999999999999 0 1 ) )
( ( 124 -224 20 0.5 0 ) ( 124 -224 8 0.5 0.5 ) ( 124 -224 -3.999999999999999 0.5 1 ) )
( ( 124 -212 20 1 0 ) ( 124 -212 8 1 0.5 ) ( 124 -212 -3.999999999999999 1 1 ) )
)
}
}
}
// entity 81
{
"classname" "target_null"
"name" "Cam3View"
"angle" "90"
"origin" "504 -52 -16"
}
// entity 82
{
"classname" "func_securitycamera"
"name" "cam4"
"angle" "45"
"model" "models/darkmod/laboratory/bunsen_burner.ase"
"origin" "376 -136 32"
"rotate" "0"
"rotation" "0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1"
"spotLight" "0"
}
// entity 83
{
"classname" "func_static"
"name" "func_static_6"
"model" "func_static_6"
"origin" "164 -224 8"
// primitive 0
{
brushDef3
{
( 0 0 1 -20 ) ( ( 0 -0.0078125 1.3125 ) ( 0.0078125 0 2 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( -1 0 0 -4 ) ( ( 0.0078125 0 254 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -19.99999999999991 ) ( ( 0.0078125 0 1.3125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -4 ) ( ( 0.0078125 0 2 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -20.00000000000009 ) ( ( 0.0078125 0 254.6875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 12 ) ( ( 0 0.0078125 1.3125 ) ( -0.0078125 0 254 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( -1 0 0 -4 ) ( ( 0.0078125 0 254 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -19.99999999999991 ) ( ( 0.0078125 0 1.3125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -20 ) ( ( 0 0.0078125 1.3125 ) ( -0.0078125 0 254 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -4 ) ( ( 0.0078125 0 2 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 -0.0078125 1.3125 ) ( 0.0078125 0 2 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 11.99999999999991 ) ( ( 0.0078125 0 254.6875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( -1 0 0 -4 ) ( ( 0.0078125 0 254 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -20 ) ( ( 0 0.0078125 1.3125 ) ( -0.0078125 0 254 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -4 ) ( ( 0.0078125 0 2 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -20.00000000000009 ) ( ( 0.0078125 0 254.6875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -11.99999999999991 ) ( ( 0.0078125 0 1.3125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 12 ) ( ( 0 -0.0078125 1.3125 ) ( 0.0078125 0 2 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( -1 0 0 -4 ) ( ( 0.0078125 0 254 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 -4 ) ( ( 0.0078125 0 2 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -20.00000000000009 ) ( ( 0.0078125 0 254.6875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 -0.0078125 1.3125 ) ( 0.0078125 0 2 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -12 ) ( ( 0 0.0078125 1.3125 ) ( -0.0078125 0 254 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 12.00000000000009 ) ( ( 0.0078125 0 1.3125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( -1 0 0 -4 ) ( ( 0.0078125 0 254.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 1 0 0 2 ) ( ( 0.0078125 0 1.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 -1 0 -12.00000000000009 ) ( ( 0.0078125 0 254.6875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 1 -12 ) ( ( 0 -0.0078125 1.3125 ) ( 0.0078125 0 1.9375 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 0 -1 -12 ) ( ( 0 0.0078125 1.3125 ) ( -0.0078125 0 254.375 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
( 0 1 0 -11.99999999999991 ) ( ( 0.0078125 0 1.3125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/metal/flat/copper_dirty_ns" 0 0 0
}
}
}
// entity 84
{
"classname" "func_static"
"name" "func_static_7"
"cameraTarget" "cam4"
"model" "func_static_7"
"origin" "164 -224 8"
// primitive 0
{
patchDef2
{
"textures/darkmod/camera"
( 3 3 0 0 0 )
(
( ( 164 -212.0000000000001 20 0 0 ) ( 164 -212.0000000000001 8 0 0.5 ) ( 164 -212.0000000000001 -3.999999999999999 0 1 ) )
( ( 164 -224.0000000000001 20 0.5 0 ) ( 164 -224.0000000000001 8 0.5 0.5 ) ( 164 -224.0000000000001 -3.999999999999999 0.5 1 ) )
( ( 164 -236.0000000000001 20 1 0 ) ( 164 -236.0000000000001 8 1 0.5 ) ( 164 -236.0000000000001 -3.999999999999999 1 1 ) )
)
}
}
}
// entity 85
{
"classname" "func_static"
"name" "sign_text9"
"gui" "guis/readables/sign_text_decals/sign_text_mac_humaine.gui"
"gui_parm1" "Treasure"
"model" "sign_text9"
"noclipmodel" "1"
"origin" "491.64 39.5 -7.5"
// primitive 0
{
patchDef3
{
"textures/darkmod/decals/signs/decal_gui"
( 3 3 1 1 0 0 0 )
(
( ( 473.5744482421881 39.57725585937487 0 0 0 ) ( 503.339154124541 39.57725585937487 0 0.5 3.06161713146292e-17 ) ( 565.5744482421881 39.57725585937487 0 1 6.123234262925839e-17 ) )
( ( 473.5744482421881 39.57725585937487 -12.71739130434783 -3.06161713146292e-17 0.5 ) ( 503.339154124541 39.57725585937487 -12.71739130434783 0.5 0.5 ) ( 565.5744482421881 39.57725585937487 -12.71739130434783 1 0.5 ) )
( ( 473.5744482421881 39.57725585937487 -39 -6.123234262925839e-17 1 ) ( 503.339154124541 39.57725585937487 -39 0.5 1 ) ( 565.5744482421881 39.57725585937487 -39 1 1 ) )
)
}
}
}
camera.map (48,770 bytes)   
grayman

grayman

19.09.2017 21:00

viewer   ~0009306

Last edited: 19.09.2017 21:01

Updated camera.map to include a block of text, to help with the horizontal flip problem.

If you look at the two screens on the column to the player's right, both show the text flipped horizontally. It's easier to see the flip there than it is on the screen on the column straight ahead near the two scanning cameras.

duzenko

duzenko

20.09.2017 12:15

developer   ~0009311

Copy of the framebuffer in the _scratch image is not flipped.
If put this line in glprogs\oldStage.fs
    gl_FragColor.x = gl_TexCoord[0].x;
Then red fills the remote camera from left to right instead of right to left as supposed to.
How can we check the texture coordinates for this surface in the .map file?
duzenko

duzenko

20.09.2017 12:17

developer   ~0009312

Multiple cameras in single frame.
Try this modifier in the texture stage params:
map cameraX
where X is a unique number
grayman

grayman

20.09.2017 12:25

viewer   ~0009313

- checking texture coordinates: the display screens are set so that the texture fills the screen. Does that help?

- I don't understand the "map cameraX" line. The texture is to be used on all screens, with whatever cameraTarget the patch it's used on is set to.
VanishedOne

VanishedOne

20.09.2017 14:59

reporter   ~0009314

'The way Neon wants it to work is static immovable camera, no need to react on anything.' -- In that case, I think a func_cameraview/idCameraView (if necessary with a func_static model) can do that. (There's also a func_camera_anim/idCameraAnim.)

However, I for one am happy to see func_securitycamera being worked on. If the aim is to get a fully usable security camera then http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-12#entry352597 has a note on bugs that may be useful.
grayman

grayman

20.09.2017 15:24

viewer  

cameramodel.pk4 (94,634 bytes)
grayman

grayman

20.09.2017 15:26

viewer   ~0009315

I attached dragofer's test map with his camera model. He made this 3 years ago.

Note, again, that the display screen is flipped horizontally. The gui material he's using on the screen is identical to the one I committed to SVN.
duzenko

duzenko

23.09.2017 11:56

developer   ~0009328

Got it working in svn commit 7165. Needs a separate (unique) map (texture) for each mirror and camera like this

textures/darkmod/camera2
{
...
    {
...
        map "table"
    }
}
duzenko

duzenko

23.09.2017 11:58

developer   ~0009329

Please note that the following modifier has no effect now
 mirrorRenderMap 512 256
The mirror texture is resized automatically to fit the rect it takes on the screen.
grayman

grayman

23.09.2017 12:14

viewer   ~0009330

What does

map "table"

do?

Is it named that because it's pointing at a table?
duzenko

duzenko

23.09.2017 13:47

developer   ~0009333

No that's just a unique name so that rendered images from different views don't conflict.
It can be any name, I used "table" to link it to the camera looking at the table.
VanishedOne

VanishedOne

23.09.2017 15:11

reporter   ~0009334

Are there any possible performance implications from the mirrorRenderMap auto-resize? I'm thinking of Arcturus's grass test map, where there's a big lake that blends in a fairly low-res reflective surface (mirrorRenderMap 128 128) and relies on distortion, etc. to keep it looking good.

Does the auto-resize also apply to remoteRenderMap?
duzenko

duzenko

23.09.2017 17:37

developer   ~0009335

remoteRenderMap is fixed size, assumed to be the camera "display resolution".
mirrorRenderMap performance needs independent testing. It could theoretically be a problem if texture is resized every frame.
nbohr1more

nbohr1more

24.09.2017 00:30

developer   ~0009336

Mirrors in "Caduceus of St Alban's" are all black in the latest SVN...
grayman

grayman

24.09.2017 02:54

viewer   ~0009337

The one mirror I found in a bathroom uses this material:

textures/washroom/mirror
{
    discrete
    //translucent
    //twosided
    noshadows
    qer_editorimage textures/glass/mirror
    {
        blend gl_dst_color,gl_zero
        map textures/glass/mirror
    }
    solid
    mirror
}
duzenko

duzenko

24.09.2017 11:20

developer   ~0009338

Where is bathroom in "Caduceus of St Alban's"?
The only kind of bathroom that I see in on the ground floor.
http://i.piccy.info/i9/eb06d4332f08243eabde10dd2f7f930d/1506252007/670635/1182320/Bezymiannyi.jpg
nbohr1more

nbohr1more

24.09.2017 14:08

developer   ~0009339

Strangely, I couldn't find any online images of them but I know there are at least two mirrors in rooms on this floor of the building:

http://www.moddb.com/mods/the-dark-mod/images/the-caduceus-of-saint-alban2
grayman

grayman

24.09.2017 15:03

viewer  

mirrors.zip (2,444,176 bytes)
grayman

grayman

24.09.2017 15:05

viewer   ~0009343

I attached two savegames from the rooms where the mirrors are located.

Saved with the latest SVN build.

Extract into the fms/caduceus folder.
duzenko

duzenko

24.09.2017 15:20

developer   ~0009344

textures/washroom/mirror fixed on the material level
grayman

grayman

24.09.2017 15:25

viewer   ~0009345

Both mirrors still black.
duzenko

duzenko

24.09.2017 18:23

developer   ~0009347

Sorry. Try now (src svn)
grayman

grayman

24.09.2017 18:32

viewer   ~0009348

Yay! Brilliant! Working again!
nbohr1more

nbohr1more

27.09.2017 01:48

developer   ~0009351

Skybox is broken in Caduceus with the latest revision 7174
duzenko

duzenko

27.09.2017 08:11

developer   ~0009352

Last edited: 27.09.2017 08:11

Fixed in assets svn 14964

duzenko

duzenko

27.09.2017 11:13

developer   ~0009353

Fixed skybox in water reflection
nbohr1more

nbohr1more

28.09.2017 00:40

developer   ~0009355

The Grass Demo map crashes on the latest build.

Trying to get physics bounds for audio.
nbohr1more

nbohr1more

28.09.2017 11:39

developer   ~0009361

Still crashing on the latest revision
grayman

grayman

04.11.2017 13:40

viewer   ~0009542

Transferring to duzenko, since we're now out of the realm of the remote camera.
nbohr1more

nbohr1more

27.12.2020 12:57

developer   ~0013296

2.09 beta: Rev 16049

textures/washroom/mirror

now has grime again
nbohr1more

nbohr1more

05.02.2021 16:23

developer   ~0013652

The HOM check:

if ( tr.viewDef->superView && tr.viewDef->superView->isSubview ) // 0004615 HOM effect - only draw mirrors from player's view and top-level subviews

causes the skybox to render to reflections inside buildings. We either need to do a line-of-sight check to the skybox or revert this.

Thoughts?

Issue History

Date Modified Username Field Change
08.09.2017 18:21 duzenko New Issue
08.09.2017 18:21 duzenko Note Added: 0009183
08.09.2017 18:27 duzenko Note Added: 0009184
08.09.2017 18:27 duzenko Note Edited: 0009184
17.09.2017 15:33 grayman Note Added: 0009270
17.09.2017 18:23 duzenko Note Added: 0009273
17.09.2017 20:25 grayman Note Added: 0009276
17.09.2017 20:25 grayman Assigned To => grayman
17.09.2017 20:25 grayman Status new => assigned
17.09.2017 20:25 grayman Note Edited: 0009276
17.09.2017 21:35 grayman Note Added: 0009280
18.09.2017 02:02 grayman Note Added: 0009285
18.09.2017 09:22 duzenko Note Added: 0009286
18.09.2017 09:24 duzenko Note Edited: 0009286
18.09.2017 12:45 grayman Note Added: 0009287
19.09.2017 14:09 grayman Note Added: 0009298
19.09.2017 14:12 grayman File Added: camera.map
19.09.2017 14:13 grayman Note Edited: 0009298
19.09.2017 14:14 grayman Note Added: 0009299
19.09.2017 20:58 grayman File Deleted: camera.map
19.09.2017 20:58 grayman File Added: camera.map
19.09.2017 21:00 grayman Note Added: 0009306
19.09.2017 21:01 grayman Note Edited: 0009306
19.09.2017 21:01 grayman Note Edited: 0009306
20.09.2017 12:15 duzenko Note Added: 0009311
20.09.2017 12:17 duzenko Note Added: 0009312
20.09.2017 12:25 grayman Note Added: 0009313
20.09.2017 14:59 VanishedOne Note Added: 0009314
20.09.2017 15:24 grayman File Added: cameramodel.pk4
20.09.2017 15:26 grayman Note Added: 0009315
23.09.2017 11:56 duzenko Note Added: 0009328
23.09.2017 11:58 duzenko Note Added: 0009329
23.09.2017 12:14 grayman Note Added: 0009330
23.09.2017 13:47 duzenko Note Added: 0009333
23.09.2017 15:11 VanishedOne Note Added: 0009334
23.09.2017 17:37 duzenko Note Added: 0009335
24.09.2017 00:30 nbohr1more Note Added: 0009336
24.09.2017 02:54 grayman Note Added: 0009337
24.09.2017 11:20 duzenko Note Added: 0009338
24.09.2017 14:08 nbohr1more Note Added: 0009339
24.09.2017 15:03 grayman File Added: mirrors.zip
24.09.2017 15:05 grayman Note Added: 0009343
24.09.2017 15:20 duzenko Note Added: 0009344
24.09.2017 15:25 grayman Note Added: 0009345
24.09.2017 18:23 duzenko Note Added: 0009347
24.09.2017 18:32 grayman Note Added: 0009348
27.09.2017 01:48 nbohr1more Note Added: 0009351
27.09.2017 08:11 duzenko Note Added: 0009352
27.09.2017 08:11 duzenko Note Edited: 0009352
27.09.2017 11:13 duzenko Note Added: 0009353
28.09.2017 00:40 nbohr1more Note Added: 0009355
28.09.2017 11:39 nbohr1more Note Added: 0009361
09.10.2017 21:42 nbohr1more Relationship added related to 0004296
13.10.2017 23:56 nbohr1more Relationship added related to 0004632
04.11.2017 13:40 grayman Note Added: 0009542
04.11.2017 13:41 grayman Assigned To grayman => duzenko
14.11.2017 19:40 VanishedOne Relationship added related to 0004667
02.12.2017 12:43 duzenko Status assigned => resolved
02.12.2017 12:43 duzenko Fixed in Version => TDM 2.06
02.12.2017 12:43 duzenko Resolution open => fixed
21.04.2019 16:42 stgatilov Relationship added related to 0005028
27.12.2020 12:57 nbohr1more Note Added: 0013296
05.02.2021 16:23 nbohr1more Note Added: 0013652
05.02.2021 16:51 nbohr1more Relationship added parent of 0004939
21.02.2021 10:54 Dragofer Relationship added related to 0005528