Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/work thread/' or tags 'forums/work+thread/q=/tags/forums/work thread/&'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • News & Announcements
    • The Dark Mod
    • Fan Missions
    • Off-Topic
  • Feedback and Support
    • TDM Tech Support
    • DarkRadiant Feedback and Development
    • I want to Help
  • Editing and Design
    • TDM Editors Guild
    • Art Assets
    • Music & SFX

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. I'm trying to get DR to work with my Godot projects, to replace TrenchBroom, but my first attempts haven't been fruitful. I need DR to see my project's textures, 3D models and entity definitions. I told DR where to find my game in the Game Setup window, but I'm having some issues. As far as entities go, I think I'm probably fine. I unpacked a few of TDM's .pk4 files and found the folder def with many .def files. I tried placing misc.def and tdm_base.def in there, to see if DR would load those entities after restarting, and it does but only if the game type is TDM. I'm probably fine with that, as it makes no difference, as far as I can tell. The Godot importer only cares about the contents of the .map file, which I know I can export in a few formats, so that should be fine (Q3 at least should work fine). However, DR is not seeing my project's textures. I don't know if DR can work with .png files, but I brought in some .tga files from TDM for testing and DR doesn't see them either. So something is missing, but I don't know what it is. I tried placing the textures in a textures folder at the project's root, but nothing happened. Although ideally I'd like to have the textures in root/assets/textures. I haven't tried to use 3D models at all yet, so I'm in complete darkness about that. I wonder what formats DR supports, though. I usually work with .obj, which bypasses Godot's import weirdness.
  2. As the author of this older thread, is it all right if I revive it ? I myself have a few questions about narrative structure while making an FM, and I don't want to make a completely new thread. Especially when this thread is still rather short. We don't need ten different threads with the exact same topic.
  3. I wanted to internationalise The Hare in the Snare before I released it but I couldn't get the scripts to work and had some other questions as well. I posted about it Newbie Dark Radiant Questions and nobody replied, so I gave up. It being my first FM I didn't feel confident digging into it and just wanted to release the FM. I just got the impression that it wasn't a big deal and nobody cared about it. From memory, the script worked once but I needed to re-run it and just couldn't get it to work. It's also Perl which nobody really uses anymore. I think I recommended to a 'I want to help' person to convert it to Python, but that didn't go anywhere. I don't think you need the script though if you internationalise from the very beginning (i.e. create your own dictionaries). At the end of the day it's extra work for the mapper and if it adds too much overhead (i.e. is broken or is a PITA) then nobody is going to use it. https://wiki.thedarkmod.com/index.php?title=Internationalization
  4. In post https://forums.thedarkmod.com/index.php?/profile/254-orbweaver/&status=3994&type=status @nbohr1more found out what the Fixup Map functionality is for. But what does it actually do? Does it search for def references (to core?) that don't excist anymore and then link them to defs with the same name elswhere? Also I would recommend to change the name into something better understood what it is for. Fixup map could mean anything. And it should be documented in the wiki.
  5. On a lighter note (and because my holiday started today, oh yeah!), let's have a new thread for music, that you just enjoy and probably is not so well known...or somehow obscure but does not sound as strange as the songs we report in @STiFU's progessive music thread. Here is one of my new favourites, a similar recording of this track by other artists has been used in an US show broadcasted last year ( @Amadeus: What is the name of the show? )
  6. Also, related to font improvement, I've just released "ExportFontToDoom3All256", a reconstruction of an earlier but now lost tool variant. This is described and available in the wiki article ExportFontToDoom3 I tested that tool using one of the TDM FM fonts, Andrew Script, for which a TTF file is available. I generated a fresh set of bitmaps (newly including any available Latin-1 characters). I also mucked about with FontForge, to reconfigure that TTF to be ordered like the TDM custom codepage. However, Andrew Script is missing a fair number of Latin-1 glyphs, so it would take some work to make it good (whether by editing in FontForge or post-export as bitmaps). I'm putting that aside for now, since the jury is out on whether Western language support in FMs and their fonts will become viable (see Western language support in 2024?). Instead, I plan to turn my font-improvement-for-2.13 attention to Stone 24pt, which (because its used in HUD captions) is more clearly worthwhile to work on. Looks like I'll have to convert the Stone DDS to TGA as a prerequisite to bitmap editing.
  7. edit: TL;DR: I've tweaked the .lwo exporter to preserve autosmooth angle Ahem. When I started writing this post a couple of days ago, it was supposed to be a "please help me, models won't smooth" kind of thing, but as I started taking screenshots and such for a comprehensive view of the problem, the question morphed into a "is there a hack to get .lwo's to export the way .ase's do", then to "how to get the same surface smoothing from Blender as you can get from Lightwave" and eventually to "does anyone around know python and blender enough to fix the export plugin". But then I fixed the addon myself, so it was almost as if there's no point to the thread. However, while googling around for a solution I stumbled upon a whole bunch of incomplete (1,2) or outright wrong (1,2) information, and whenever the question came up the issue was never really resolved completely. That might be because the problem isn't obvious, since a lot of exported models will actually end up correctly smoothed on export, leading one to believe wrong shading in rare cases is due to modeling mistakes / bad shadowmesh / etc. Point is, having the definitive .lwo smoothing post seems useful. Identifying the problem: Here's the mesh. I add an 'edge split' modifier (I use sharp edges while modeling the low poly, so I can uncheck the 'edge angle' option). I can now apply the modifier(s) and export to .ase (triple the mesh either in export options or in modifiers beforehand). The .ase looks alright in-game: Now I'll export it to .lwo using this script. Depending on export options, here are the results: If I also check "remove doubles", I'll lose all of the split (sharp) edges: (recalculating normals on export can be unpredictable as well, so clean up the model beforehand instead) Right about this point I start searching for a solution online, stumble upon this and try the renderbump hack. However, all it seems to do is weld all of the vertices back together at runtime and attempt to smooth the whole surface, similarly to "remove duplicates", but with no upper threshold. (to anyone possibly reading this in the future: don't forget to revert your changes to the materials!) Source of the problem: At this point I still wasn't sure if it's even possible to get .lwo's identical to .ase's, so I installed Lightwave. Naturally, it took some time to eventually stumble upon Surface Editor (F5), and the "smoothing threshold" contained therein. But then I just had to crank it up to 180 and export to "LWO2". That fixes everything in-game: So the issue is trivial, I just have to find a way to somehow pass on a smoothing angle through the exporter. However, the "auto smooth" option on the object data tab doesn't seem to affect anything regardless of angle. Long story short, after some hex-comparison magic, I home in on SMAN block in the exporter script: So what it actually does is set your smoothing angle to either 90°, 86°(??), or 0°, depending on whether you've chosen "idtech compatible", "smoothed", or neither. The solution: Now, I don't know Python and I don't know Blender scripting, so I can't say with full certainty that I didn't break anything. But I did cobble together a version of the script that seems to do the job. Here it is, mirror / do whatever you want with it. If your mesh has autosmooth enabled, and you've checked "idtech" or "smoothed" on export, your chosen autosmooth angle will now transfer to the surface in .lwo: I took the liberty of changing the default export options to what seems to suit TDM the best, you can just open the script in notepad and edit them to your taste. Wrapping up, there are still some mysteries I didn't solve, such as "idtech compatible" models taking up only half the size of models exported otherwise (including from Lightwave itself), there doesn't seem to be any visible difference in-game, at least in TDM. That "1.5 radian" in the code still makes me scratch my head. And I still don't know if the 4-8x size savings over .ase matter for in-game memory at all (but at least I know I won't have to edit the *BITMAPs manually anymore). Even after all this, the .ase still has just slightly better shading, but since the outputs of the exporter and Lightwave itself are now identical, seems safe to say it's as good as it gets.
  8. Here's my first FM. A small and easy mission, inspired by Thief's Den and The Bakery Job, where you must find and steal a cook's recipe book in order to save a friend from going out of business. Download: Mediafire (sk_cooks.pk4) TDM Website's Mission Page The in-game mission downloader Thanks to: The people who helped me get this far, both in the forums and on Discord. The beta testers: MirceaKitsune, Mat99, Baal, wesp5, Cambridge Spy, jaxa, grodenglaive, Acolytesix ( Per the author in the beta testing thread. ) Skaruts has given permission to the TDM Team to add Subtitles or Localization Strings to this mission. (No EFX Reverb.) If anyone from the Community or TDM team wishes to create these we will gladly test them and update the mission database.
  9. Could be something funky going on with our implicit RGTC compression. We use a Microsoft BC format for pre-compressed normals but our on-the-fly encoder is supposed to use standard OpenGL tangent space normals. I wonder if the work to fix BC loading had some unintended effect on uncompressed loading? Maybe @orbweaver can be convinced to take a 2nd look?
  10. Correctly me if wrong. Apperantly xdata formatting doesn't work well with the lang references. So this: maps/man2/mission_briefing { "num_pages": "1" "page1_body" : "#str_b1" "" "#str_b2" "" "#str_b3" } Doesn't work. You can only do this: maps/man2/mission_briefing { "num_pages": "1" "page1_body" : "#str_b1" } And then in the lang file you have to add the whole text of page 1 and get newlines via \n etc. So writing a (text only) briefing or readable and after that translating, is probably not something you want to do. I didn't actually test this with readable's, but it seems to me it would have the same limitation.
  11. Now that The Dark Mod 2.11 is out, please share any thoughts, issues, or well-wishes here. Thank you!
  12. After playing various Dark Mod FM’s, I become hooked to the game, like I was with Thief (and its FM’s). So, like I do to all games I love, I tried to find ways to improve it. Since my first contact with DM and after playing T1 and T2 with the fantastic “HD Mod”, it became apparent that graphically, TDM struck me strange. Of course, it is clearly a BIG improvement over T3 and it’s not worse then Thief 2014 -- if you remove all those post processing effects, the textures are actually very bad for today standards – but it could be a little bit better. So I started to change a texture here, a texture there, whenever I found a texture that could be improved. Initially, I made this for my own amusement, while i was playing, but as the changes increased, I started to think I it would only be fair to share it with the community. As a note, I really appreciate the amount of work done by the contributors to TDM. It’s amazing how an open source project of a game whose genre is unfortunately condemned to target a niche player base could attract so many talented people to work together and create what essentially is the Thief 4 we never had. So this is in no way a mean to disrespect the contributors and their work. What changed and how Currently, around 530 files were changed. The changes end up in one of the following categories: NOTE: “texture quality” noted below is subjective and represents only my point of view. Again, It is in no way a mean of disrespect for the original author and its work. The texture is good but is in a low resolution – upscale it using AI image enhancement methods. The texture is poor and low res, with poor AI upscale results – try to replace it using various free PBR or raw Image sources (1) or create my own. If necessary, adjust the image using (colors, saturation, contrast, …) The texture has a good resolution and its not quite good but can be improved – improve using gimp (ex: on textures with bur, use sharpen, noise reduction or/and other features) (2) The texture depicts an horrible stew – change it to a decent and delicious stew, because my Portuguese roots forced me to do it. Additionally, specular and normal maps were added to some textures. (1) Free textures and PBR sites already discussed on this forum (texturehaven.com, 3dtextures.me, cc0textures.com and so on). (2) Finding the right texture is not always easy. I always tried to follow the same “feel” and appearance of the original image, but i confess that this is not always the case. Again, very subjective. New version 2021.01.08 * Around 170Mb of textures processed Some tree barks enhanced Stucco change more enhancements on doors, paint paper, fire places, ground textures, curtains .. and much more Screenshots and Comparisons It’s obviously undoable to show the comparison for all changed textures, so keep in mind that the following screenshots are just a very small example of the whole project. Also, very important, keep in mind that there is so much you can do with screenshots and in game the differences are much more clear than what is shown below. Sir Talbot's Collateral https://imgsli.com/MTI2NDE https://imgsli.com/MTI2MzY https://imgsli.com/MTI2Mzc https://imgsli.com/MTI2Mzg https://imgsli.com/MTI2Mzk https://imgsli.com/MTI2NDA WS3: Cleighmoor https://imgsli.com/MTI1OTE WS1: In the North https://imgsli.com/MTI2MTY https://imgsli.com/MTI2MTc WS2: Home Again https://imgsli.com/MTI2MjM https://imgsli.com/MTI2MjQ https://imgsli.com/MTI2Mjc https://imgsli.com/MTI2Mjg https://imgsli.com/MTI2Mjk https://imgsli.com/MTI2MzE https://imgsli.com/MTI2MzM New (version 2021.01.08) Briarwood Manor https://imgsli.com/MzUwNDY https://imgsli.com/MzUwNDg https://imgsli.com/MzUwNTE https://imgsli.com/MzUwNjc The Builder's Influence https://imgsli.com/MzUxNjM https://imgsli.com/MzUxNjQ No honor among thieves: forest https://imgsli.com/MzU0ODE https://imgsli.com/MzU1NTQ https://imgsli.com/MzU1NTk How to install 1) download the pk4 file from here 2) drop it on your TDM game folder (where all the other pk4 files are) 3) Play! Uninstall Just remove z_TDM_HD.pk4 file from your TDM install folder. Disclaimer If you are a purist, please don’t use this texture mod. Don’t bash it for not being “exactly the same as the original ones but hires”. If you find some texture that is copyrighted, please let me know and i will replace it. Fell free to suggest changes, but please don't make requests. Understand that i am doing this while playing and if i start feeling that i'm working instead, i will probably start to loose my interest. PS: I really don't know if this is the right thread to make this post. Let me know if i need to change it to another thread.
  13. I've also added new links to royalty-free music in my other external music database thread. I've covered the historical music fairly in-depth, but the royalty-free tracks were lacking in numbers, so I searched around for some interesting ones. There's more to come in that other thread in particular.
  14. I tried the German translations for fm The Thiefs Den. Doesn't work. When I include the russion translation pack from Darkfate, the original German translations work as well. The translation package from Darkfate adds a lot more files, including the xd and map files.
  15. Hello taffers, The campaign "Hidden Hands: Blood & Metal" consisting of five missions is now basically ready for beta testing (the briefing videos are missing and there are still some "real" speakers missing, at the moment there are tentative robot voices in these places, hope to replace them in the next two or three weeks). Unfortunately, the project has become somewhat more extensive than originally planned. It took me about two hours to test each mission. So you should allow at least12 hours for all five missions on the first run. Beta testing shall start at the beginning/middle of next week. The difficulty level is somewhere between "The Anomaly" and "The Lost Citadel". Some things are easier, others are not, but proper exploration and usage of the available resources/objects should always pave the way to success. Sign in here, if you are taff enough! Jack Testing thread:
  16. @Petike the Taffer Well that was challenging, but I managed to get it to work with a dummy AI (but with a warning message). Using hide doesn't work on the dummy, as each time it moves it un-hides. You need to use an invisible model. I used the atdm:ai_base, which surprisingly worked with these spawn args so it doesn't interfere with the player position and is inert as possible. Then you just need to trigger a follow script, e.g.: void follow_dummy() { $dummy.setOrigin($player1.getOrigin()); $dummy.hide(); //not sure why this is needed, but it stopped working when I deleted it sys.wait(0.2); //needed to prevent game from hanging thread follow_dummy(); } Alternatively, I tried to just bind the dummy to the player instead, but then the follower ai wouldn't follow me.
  17. Is this a burglars request thread? Edit: This question was raised onto the original title of this thread, which looked somewhat like a request for players of sorts.
  18. My old friend Andreas urgently needs my help. He asked if I could meet him at the Lion's Head Inn, our favourite retreat in a quaint part of the city called Mirkway Quarter. He’s got a small apartment nearby where he makes a modest living off paintings he sells to pompous nobles and the odd merchant. Not long ago, his wife Lily was hired as a servant at the manor of the local alderman, one Lord Marlow. Now she hasn't been home for days. Andreas went to the manor looking for her, but the guards shoved him into the gutter and warned him not to return. Andreas is certain that something bad has happened, and I don’t think he’s wrong. Gallery Authors’ Notes It all started many years ago when Shadowhide laid the foundation for a sprawling and convoluted city and worked with MoroseTroll and Clearing to create a macabre storyline to befit this medieval metropolis. At some point, however, the beast grew too large to handle, so he handed the keys to the City to Bikerdude and Melan. Together, the two worked tirelessly, passing the map back and forth, each playing to their respective strengths. Notably, Melan reworked the story concept, toning down many of its darker, R-rated elements. Eventually Melan, too, moved on in 2017, but by then large swathes of the community had become involved in this map’s development. Mapping work was contributed by Baal, Grayman, Fidcal, Ubermann, Skacky, and Flanders, while Destined, nbohr1more, and Obsttorte wrote story texts. Several scripts were provided by Grayman, Baal and Obsttorte, such as an elevator with scissor gates, a TDM first. Even after all this input, the daunting task still remained to transform what had grown into the largest TDM map ever made into a playable mission. Bikerdude hammered away at this for some more years still, on and off between other projects, until in early 2020 when he deemed it ready for public viewing. It was then that Dragofer and Amadeus joined in. In the months that followed, the trio reworked, finished, and polished the mission in nearly every aspect, fully writing out and editing the story as well as adding countless scripted effects and (with help from Bienie) many new readables. The good working atmosphere and pooled creativity brought forth several new secrets, of which the largest likely hasn’t been done before in TDM (hint: check the libraries). In the very end, the name “Fractured Glass Company” was drawn up to refer to everybody who was involved in creating this very special mission. Without the hard work of all these people, most of all Bikerdude and Shadowhide, this mission would likely never have seen the light of day, let alone become what you see here before you. The mission is, as Bikerdude puts it, a homage to Thief 1 & 2, and it’s our hope that you catch these vibes as you explore and enjoy this mission. Update 1.2 (released 04/04/2021) Update 1.1 (released 11/11/2020) Credits - Mapping: Shadowhide, Bikerdude, Amadeus, Baal, Dragofer, Fidcal, Flanders, Melan, Skacky, UberMann - Original Story Concept: Clearing, MoroseTroll, Shadowhide - Story & Readables: Amadeus, Bienie, Bikerdude, Dragofer, Destined, Melan, nbohr1more, Obsttorte, Shadowhide - Editor: Amadeus - Scripting: Dragofer, Baal, Grayman, Obsttorte - Voice Acting: AndrosTheOxen (Andreas), Joe Noelker (Player) - Video Editing: Bikerdude (briefing), Goldwell (briefing intro) - Custom Models: Bikerdude, Dragofer, Dram, Epifire, Grayman, Obsttorte - Custom Textures: Airship Ballet, Dmv88, Hugo Lobo - Custom Sounds: GigaGooga, Sephy, Shadow Sneaker, alanmcki, andre_onate, Deathscyp, dl-sounds.com, Dmv88, dwoboyle, eugensid90, gzmo, lucasduff, mistersherlock, qubodup, randommynd, richerlandtv, sfx4animation, Speedenza - Betatesting: Amadeus, ate0ate, Biene, Bluerat, CambridgeSpy, Cardia, Dragofer, Garrett(Monolyth-42), JoeBarnin, Kingsal, Krilmar, ManzanitaCrow, MikeA, Noodles, S1lverwolf, s.urfer Download Note: this mission requires TDM 2.08, which is now available for download. Please be aware that old saved games will no longer work after you upgrade to 2.08's release build. Note: it’s highly recommended to run this mission using the 64-bit client (TheDarkModx64.exe), since there've been frequent reports the mission won't load on the 32-bit client (TheDarkMod.exe). Both are found in the same folder. The mission is available from the ingame downloader. In addition to that, here are some more mirrors, as well as the official screenshots for anybody uploading this mission to a FM database: Mission: Google Drive / OneDrive Mission (v1.1, slimmed down version for 32-bit clients): Google Drive / OneDrive Official Screenshots: Google Drive / OneDrive Hi-Res Map: Imgur Links Secret loot & areas walkthrough by @Lzocast
  19. No issues whatsoever, runs great, easy setup. There's nothing like lounging around the couch being able to play my favorite FM's. Image was captured at work.
  20. this user is impervious to holy water

    open to work, seeking for private supernatural guard job for rich noble house job , supernatural mercenary job, sacred place private security or something along that line

  21. After some amount of work I'm happy to be able to share my Christmas gift for TDM! Or at least half of it, considering the other half is still only in design phase. I created an addon that implements detailed player functionality, inspired by the first DeusEx game (The Conspiracy). It's NOT a mission script but an addon, meaning you place the pk4 in your TDM directory to enable the system and it will automatically work in each and every FM. Note that due to using tdm_user_addons.script / user_addon_init() it may disable or get disabled by other addons you have installed... this is a design limitation which can hopefully be lifted at some point in the future. This plugin will be included in my cyberpunk total conversion The Dark Module and automatically active with it, but first I shall design it and make it available as a small independent addon for vanilla TDM. In the current initial release it implements just per-limb damage; The upcoming plan is to add a skill / augmentation system, allowing the player to use loot as skill points to enhance various body parts and gain new or improved abilities. Due to the scripting system being very limited in what it lets me modify, I'm still gathering documentation on how to implement those skills and which I can have. So until then detailed body damage with penalties remains the only part that's theoretically finished so far (further improvements are required here too)... including a HUD component above the lightgem showing the status of each body part: Green = full health, yellow = half health, red = (close to) no health, black = no health left. The individual limbs available: Head, Torso, Left Arm, Right Arm, Left Leg, Right Leg... arms and legs work in unity however. They each take damage with the player as well as healing together with them. The more damaged a group is, the more a respective penalty is applied to the player. Groups and penalties include: Head: When the head is damaged, the player begins to get dizzy and has their vision impaired. Currently the only effect replicates the flashbomb, causing white dots to appear around the player and disrupt their view until the head is healed. As the player can't live without a head, reaching 0 will cause instant death. More effects are possible and pending. Torso: Damage to the torso translates to damage to the cloak, increasing the player's lightgem and rendering them more visible even in dark spots. As the player can't live without a torso, reaching 0 will cause instant death. Given script limitations I'm unable to simulate lung damage and decrease / limit the amount of air the player has. Arms: Arm damage makes it difficult for the player to hold items: In-world objects being held will probabilistically get dropped, more often the worse your arms are hurt. When both arms reach 0 health, the player can no longer pick up anything in the world without instantly dropping it... you also become unable to use any weapons. Due to limitations in the scripting system, I'm unable to decrease the speed or accuracy of the blackjack / sword / bow as was desired. Legs: As expected leg damage will make the player walk more slowly. It was desired that when one leg is lost the player can no longer jump, whereas when both legs are gone you remain stuck in crouch mode until healed... due to limitations in the scripting system this part is also not possible at the moment. A crude limitation is the fact that limb damage is primarily based on the direction the player is walking toward... for example, increased likelihood of suffering damage to your right arm and leg if strafing right the moment you take the damage. The script system doesn't let you extract the vector direction of the last damage event, thus I can't use the real direction the hit came from when calculating which body part should absorb the most health loss. This means that even if an arrow comes from above and hits the player's head area, the player will only take damage to the legs if they're falling downward the moment they got hit... for the time being this provides a bare minimum amount of realism but is a very bitter implementation. For this reason it would be greatly appreciated if any of the code developers could join this discussion and verify if they can help with adding the necessary hooks to external scripts: With 2.09 getting periodic beta releases at this point in time, it would be a great opportunity to make changes to the builtin player script that allow an external function to modify more player variables. This includes the efficiency of weapons, if the player is allowed to jump or forced to always crouch, and I'd also really appreciate a hook to manipulate the breath so air can be lowered as if the player is underwater. I understand other priorities exist or if the work may be considered too much, however this would help in being able to finish this mod with the proper functionality and planned skill set. In the meantime let me know what you think of this idea and how I went about it! So far no new assets are included except the GUI graphics: Everything is done with less than 250 lines of script which I'd say is a good achievement I've attached the pk4 and since it's so lightweight I'll also add the main script straight in this post. player_damage_1.0.pk4 #define DAMAGE_WAIT 0.0166667 #define EXPOSURE_ARM_LEFT 2 #define EXPOSURE_ARM_RIGHT 2 #define EXPOSURE_LEG_LEFT 2 #define EXPOSURE_LEG_RIGHT 2 #define EXPOSURE_HEAD 3 #define EXPOSURE_TORSO 1 #define PENALTY_TORSO_LIGHTGEM 4 player self; float damage_gui; boolean dizzy; entity dizzy_particles; float bound(float val, float min, float max) { if(val < min) return min; if(val > max) return max; return val; } // Range based probability: Calculates a probability per frame independent of wait time (0 - 1 range at 1 chance per second) boolean prob(float x) { return sys.random(1) > x && sys.random(1) < DAMAGE_WAIT; } // Directional exposure calculator float dex(vector dir, float ex_front, float ex_back, float ex_right, float ex_left, float ex_up, float ex_down) { float maxvel = 100; float dir_front = bound(dir_x / maxvel, 0, 1) * ex_front; float dir_back = bound(-dir_x / maxvel, 0, 1) * ex_back; float dir_right = bound(dir_y / maxvel, 0, 1) * ex_right; float dir_left = bound(-dir_y / maxvel, 0, 1) * ex_left; float dir_up = bound(dir_z / maxvel, 0, 1) * ex_up; float dir_down = bound(-dir_z / maxvel, 0, 1) * ex_down; return dir_front + dir_back + dir_right + dir_left + dir_up + dir_down; } void player_damage_update_arm(float dmg_l, float dmg_r) { float hl_l = self.getFloatKey("health_arm_left"); float hl_r = self.getFloatKey("health_arm_right"); float hl = (hl_l + hl_r) / 2; if(dmg_l != 0 || dmg_r != 0) { hl_l = bound(hl_l - dmg_l, 0, 1); hl_r = bound(hl_r - dmg_r, 0, 1); hl = (hl_l + hl_r) / 2; self.setKey("health_arm_left", hl_l); self.setKey("health_arm_right", hl_r); self.setGuiFloat(damage_gui, "PlayerDamage_ItemArmLeft", hl_l); self.setGuiFloat(damage_gui, "PlayerDamage_ItemArmRight", hl_r); // Penalty #1: Disable the weapon once the arm are damaged to minimum health if(hl == 0) { self.selectWeapon(WEAPON_UNARMED); self.disableWeapon(); } else { self.enableWeapon(); } } // Penalty #2: Probabilistically drop held items based on arm damage if(hl == 0 || prob(hl)) if(self.heldEntity() != $null_entity) self.holdEntity($null_entity); } void player_damage_update_leg(float dmg_l, float dmg_r) { float hl_l = self.getFloatKey("health_leg_left"); float hl_r = self.getFloatKey("health_leg_right"); float hl = (hl_l + hl_r) / 2; if(dmg_l != 0 || dmg_r != 0) { hl_l = bound(hl_l - dmg_l, 0, 1); hl_r = bound(hl_r - dmg_r, 0, 1); hl = (hl_l + hl_r) / 2; self.setKey("health_leg_left", hl_l); self.setKey("health_leg_right", hl_r); self.setGuiFloat(damage_gui, "PlayerDamage_ItemLegLeft", hl_l); self.setGuiFloat(damage_gui, "PlayerDamage_ItemLegRight", hl_r); // #Penalty #1: Make movement slower self.setHinderance("health", 0.25 + hl * 0.75, 1); } } void player_damage_update_head(float dmg) { float hl = self.getFloatKey("health_head"); float time_current = sys.getTime(); if(dmg != 0) { hl = bound(hl - dmg, 0, 1); self.setKey("health_head", hl); self.setGuiFloat(damage_gui, "PlayerDamage_ItemHead", hl); // Penalty #1: Without a head the player dies if(hl == 0) self.damage(self, self, self.getOrigin(), "damage_suicide", 1); // Penalty #2: Simulate dizzyness starting at half health if(hl <= 0.5) { if(!dizzy) { dizzy_particles = sys.spawn("func_emitter"); dizzy_particles.setModel("flashbomb.prt"); dizzy_particles.setOrigin(self.getEyePos()); dizzy_particles.bind(self); dizzy = true; } } else { if(dizzy) { dizzy_particles.remove(); dizzy = false; } } } } void player_damage_update_torso(float dmg) { float hl = self.getFloatKey("health_torso"); if(dmg != 0) { hl = bound(hl - dmg, 0, 1); self.setKey("health_torso", hl); self.setGuiFloat(damage_gui, "PlayerDamage_ItemTorso", hl); // Penalty #1: Without a torso the player dies if(hl == 0) self.damage(self, self, self.getOrigin(), "damage_suicide", 1); // Penalty #2: Torso damage negatively affects the lightgem self.setLightgemModifier("damage", (1 - hl) * PENALTY_TORSO_LIGHTGEM); } } void player_damage() { sys.waitFrame(); self = $player1; damage_gui = self.createOverlay("guis/player_damage.gui", 1); float health_old = 100; // Init by sending a heal event filling the limbs to full health player_damage_update_arm(-1, -1); player_damage_update_leg(-1, -1); player_damage_update_head(-1); player_damage_update_torso(-1); while(1) { // sys.waitFrame(); sys.wait(DAMAGE_WAIT); float health_current = self.getHealth(); float dmg = (health_old - health_current) / 100; float dmg_arm_left = dmg * EXPOSURE_ARM_LEFT; float dmg_arm_right = dmg * EXPOSURE_ARM_RIGHT; float dmg_leg_left = dmg * EXPOSURE_LEG_LEFT; float dmg_leg_right = dmg * EXPOSURE_LEG_RIGHT; float dmg_head = dmg * EXPOSURE_HEAD; float dmg_torso = dmg * EXPOSURE_TORSO; // If this is damage and not healing, apply directional damage to each limb if(dmg > 0) { // Currently we estimate damage direction based on the player's velocity, we should fetch the real direction of a damage event when this becomes possible vector dir = self.getMove(); vector ang = self.getViewAngles(); // Protections based on the player's position and relation to the environment // protection_look: 1 when looking up, 0 when looking down // protection_low: Higher as the lower part of the body is exposed float protection_look = 1 - (90 + ang_x) / 180; float protection_low = 1; if(self.AI_CROUCH) protection_low = 0; else if(self.AI_ONGROUND) protection_low = 0.75; // Use the dex function to calculate directional exposure patterns, direction order: Front, back, right, left, up, down // Arms: Somewhat likely to be hit, no added protection // Legs: Somewhat likely to be hit, added protection when the player is crouching // Head: Unlikely to be hit, added protection when the player is looking down // Torso: Likely to be hit, no added protection float exposure_arm_left = bound(sys.random(0.375) + dex(dir, 0.5, 0.25, 0.0, 1.0, 0.0, 0.25), 0, 1); float exposure_arm_right = bound(sys.random(0.375) + dex(dir, 0.5, 0.25, 1.0, 0.0, 0.0, 0.25), 0, 1); float exposure_leg_left = bound(sys.random(0.375) + dex(dir, 0.75, 0.5, 0.0, 0.5, 0.0, 1.0) * protection_low, 0, 1); float exposure_leg_right = bound(sys.random(0.375) + dex(dir, 0.75, 0.5, 0.5, 0.0, 0.0, 1.0) * protection_low, 0, 1); float exposure_head = bound(sys.random(0.25) + dex(dir, 0.25, 0.75, 0.5, 0.5, 1.0, 0.0) * protection_look, 0, 1); float exposure_torso = bound(sys.random(0.5) + dex(dir, 0.75, 1.0, 0.0, 0.0, 0.0, 0.0), 0, 1); // Apply the exposure to damage, multiplied to simulate the sensitivity / resistance of each limb dmg_arm_left = exposure_arm_left * dmg * EXPOSURE_ARM_LEFT; dmg_arm_right = exposure_arm_right * dmg * EXPOSURE_ARM_RIGHT; dmg_leg_left = exposure_leg_left * dmg * EXPOSURE_LEG_LEFT; dmg_leg_right = exposure_leg_right * dmg * EXPOSURE_LEG_RIGHT; dmg_head = exposure_head * dmg * EXPOSURE_HEAD; dmg_torso = exposure_torso * dmg * EXPOSURE_TORSO; } player_damage_update_arm(dmg_arm_left, dmg_arm_right); player_damage_update_leg(dmg_leg_left, dmg_leg_right); player_damage_update_head(dmg_head); player_damage_update_torso(dmg_torso); health_old = health_current; } }
  22. I think this is a slippery slope fallacy. Just because the ability to customize exists does not mean most mappers will use it. On the contrary, if one considers the customization that are already available, we see that the overwhelming majority of mappers stick to the defaults. The exceptions are interesting also. Kingsal's the only mapper that readily comes to mind who habitually deviates from presets seemingly just for the sake of being different. However everything they make is clearly in service of cohesive visions. Hazard Pay, no matter how you feel about it, unarguably loses a great deal of its survival horror character if you take away the napalm arrows or the punishing save system. The Voltas don't need to use Thief style elemental crystals in place of TDMs arrow model, but the fact that they are there makes a definite statement about the author's awareness of their inspiration for their work in TDM from the original games, which in turn draws attention to other, subtler creative choices. I think it's also telling that some of kingsal's modifications have been adopted by other authors. As OrbWeaver said, "If the defaults are widely disliked, they should be changed." However, how can the community come to a consensus unless there are maps to showcase the advantages of new innovations? Requesting, or worse requiring, players to go in and manually change settings in order to experience a new mechanic is never going to gain any traction. Certainly it is not worth the effort of creating an entire map built around a new paradigm.
  23. I'm happy to present my first FM, The Spider and the Finch. There may be a spider, but no ghosts or undead. It should run a couple hours. It's now available on the Missions page or the in-game downloader. Many thanks to the beta testers Acolytesix, Cambridge Spy, datiswous, madtaffer, Shadow, and wesp5 for helping me improve and making the mission to the best of my abilities. This would not be have been possible without Fidcal's excellent DarkRadiant tutorial. Thanks also to the many people who answered my questions in the TDM forums. Cheers! 2023-12-13 Mission updated to version 3. Fixed a bug where the optional loot option objective was not actually optional. Updated the animations for Astrid Added a hallway door so the guards are less likely to be aggroed en masse.
  24. EDIT - v1.1 can be found a few posts below ------------------------------------------------------------------ Nameless Objects Mod v1.0 Description: this mod adds names to almost all core objects players can grab and hold in their hands. ------------------------------------------------------------------- How to use: As of this moment the Mod only works if you have "Core Essentials", which is included in TDM Modpack v4.0. Make sure to have "Core Essentials" and then download the *.pk4 attached to this post and place it in your TDM folder. I try my best to provide stuff people can experience first hand to form an opinion. I suggest you try "Business as Usual" by Bikerdude since this mission includes quite a few items you can grab right at the beginning. ------------------------------------------------------------------- Technical: The mod consists in a couple of def files and a script. I had to include two defs because otherwise there can be issues related with inheritance. The script does most of the work and it will run in the background as soon as a mission starts. The script runs once but it takes its time (10 to 30 seconds) not to hinder performance. All this is transparent to you. ------------------------------------------------------------------ Future: I wouldn't like this to remain as a mod and I volunteer to add names to all core defs for 2.13. I would, of course, use the translation system so that names can be translated in the future to languages other than English. I can name all core defs in a couple of rainy mornings but the Development Team must guarantee this work won't go to waste. The idea is that we name all core objects today and we let it stay: nothing changes in the source code and nothing gets displayed on screen. We get stuff done in the background and someday perhaps, all or part of it sees the light in some form. ------------------------------------------------------------------ There are quite a few things that must be discussed and agreed before we get started but the first step is: yes or no. People that might be interested in supporting and helping with this initiative: @datiswous, @Geep. Cheers! z_nameless_objects_mod_v1.0.pk4
×
×
  • Create New...