Jump to content
The Dark Mod Forums

MirceaKitsune

Member
  • Posts

    1930
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by MirceaKitsune

  1. Just finished implementing the base definitions for all 8 rifle types. At the moment they still shoot simple plasma (the TDMU replacement for arrows); The next step is to implement the actual arrow effects from each bow in vanilla TDM, which later down the road will be customized with its own models and sounds and particle effects. First a look at the ammo containers, themselves taken from Xonotic using the new cell model by Morphed. Each color and size represents the ammo type.
  2. I've been away, but now I'm back to work on this mod yet again. Before continuing to add new things, there's one final correction I wanted to make; Replacing the Compound Bow with a proper badass looking rifle. The bow was a more temporary solution, which I mainly went with thinking I wouldn't have to make new animations for the AI... it was naive to think I could avoid that and get away with taking the lazy route, so now I went back and did things right. The new rifle is based on the Nex gun from Xonotic. There will be 8 different models and colors for each plasma type (normal, water, fire, moss, gas, shock, noise, rope). Each uses a different variation of the weapon, consisting of different colors as well as a different pads on the tip of the gun model (more on that in the upcoming posts). For now I'll post a few screenshots of the base rifle... the fun stuff comes once the others will be implemented as well
  3. I just now remembered I've seen something similar before, didn't make that connection. Stirling engines of various sorts are a decoration we could very well introduce to TDM. And yes: When I said steampunk fan, I didn't mean a fan powered by steam... just a steampunk era fan
  4. I recently saw this video someone shared on Twitter: https://www.facebook.com/GLOBALinformers/videos/658135374563127 I did not know steampunk fans existed, nor that candle-powered fans would legitimately work to begin with! In any case this is a great asset TDM could consider adding
  5. Wow. So if you place multiple entities or models (even static ones) with the same mesh, the engine doesn't know how to create only one copy in the GPU? That's an essential performance improvement, wouldn't have expected an engine made after 2005 not to have it... really hope the next TDM version will offer support for this. I assume at least stuff like VBO is supported natively.
  6. In a first phase, I'm re-implementing the original TDM tools in modern variants. This is almost ready as is shown in the screenshots above. Later I hope to have a system where weapons can be defined with multiple ammo types, as well as upgraded from terminals. I'll then port the TDM arrows (water, fire, moss, etc) as bullet types for various weapons (pistol, shotgun, machine gun, etc). This will be quite the trick to achieve, but that's the model I intended since a few years ago when I first planned the project. The goal is to have a cyberpunk version of TDM. Gameplay wise, the main differences will be that it may focus a little more on hacking, items and inventory, as well as being designed for slightly longer campaigns rather than short one-time missions (though both will be welcome). My mod is currently separate, yes. I might take inspiration from some of the ideas in his version of the mod, but for now I'm going with my own assets and approach. We are discussing how to collaborate on the common goal of a futuristic TDM mod, but for now I myself need to be clear of where my version is going and what I'm going to get done on my own first.
  7. Thank you! That part I am fine with: I will primarily port models from Xonotic, BlendSwap, OpenGameArt, etc... I'm not a good artist myself, but what exists there is enough to find a good set of models to build the mod with. What I'll greatly need help with will be original scripts: The mod will be modifying or building upon some of the functionalities of vanilla TDM, and many of those things I don't know how to do. I'll want a few daring changes in the end... such as an augmentation system, weapon modding, a grid inventory (similar to Minecraft / DeusEx), an AI for bots that can shoot (can be based on the Steambot), and of course the interactive screens from Doom 3. For now I'll be working on more assets, and once there's enough to establish a theme the time will come for that part.
  8. It's actually for a cyberpunk mod, it will be a scifi conversion of TDM. New weapons should be easy to add to vanilla TDM too though... I should probably post the decompiled blends I created as a reference.
  9. Thank you very much for the info! So I will use frob_action_script to set the given weapon slot as active, which I assume doesn't interfere with the item being picked up in the process. What I would also need in that case is a drop_script / select_script / deselect_script / use_script for the item... are there any def hooks for calling script functions on this as well please? And don't worry about that: My mod will ultimately have a customizable hotbar, different from the vanilla inventory screen (think Minecraft of DeusEx inventories). I might need to ask other questions when I get there, for now though this is the first step to unifying weapons with other items. That's fine: With this model weapon entities are treated as virtual registers, being set and unset only by the dummy item. In fact I'd prefer making it impossible to place the weapon def directly on the map for my original weapons, to avoid any potential mismatches and inconsistencies. This might however require some extra tweaking.
  10. I believe the cleanest way would be to make the dummy inventory item control the weapon, and have this item be picked up from the map instead of the weapon entity. This inventory item would itself only need 3 calls / features as far as I can tell: When you pick it up, it gives the player the weapon in cause.When you drop it, it removes the weapon from the player.When you use it, it selects the weapon as if you pressed its keybind.But I don't know how to add this functionality from the item's def. If it's simple, could anyone explain the lines I'd need in order to achieve this?
  11. This question addresses a feature I plan for my cyberpunk extension The Dark Module. It will eventually have an unified inventory, on which every item will be part of the same tool belt. I would like to know how I can combine weapons with item definitions, making them appear and be possible to select from the item browser. Basically I want to make the Blackjack / Sword / Arrows appear in the same inventory list as the Lamp / Compass / Lockpicks / Readables / etc: Just as you select the Lamp item and hit the "use" key to toggle the light, you could select the Sword item and hit the "use" key to select or holster the sword weapon. Obviously you can still activate weapons using their keybinds... although my mod will replace those with a customizable hotbar, which is what this feature is as a starting step for. Technical note 1: I'm aware that weapons are defined differently from player tools, using builtin idTech 4 entries of the form "def_weapon1 atdm:weapon_blackjack". This would obviously not change! What I believe I'm looking for is an additional definition per weapon, which separately creates an item entry for that weapon as well: When you pick up a weapon on the map, the player gets both the normal weapon entry as well as an inventory entry... this entry separately creates an item for that weapon in the player tools list, which activates its weapon when used. Technical note 2: Item dropping would have to be accounted for. If you select a Lockpick for instance, there is a key to hold the item in front of you then drop it to the ground. When doing this with a weapon, dropping the item should of course also unregister the weapon entry and make it unavailable. Obviously the weapon may not be selected while carrying its inventory entry as an item. What is the simplest and cleanest way to achieve this? Can I make the weapon definition register an item directly, or does that have to be a separate entity? If it's the later, how do I make it so that the weapon entity you receive from the map offers both the weapon definition and inventory item to the player simultaneously?
  12. Since I'm going for a detailed interactive world, I decided I'll want at least 4 melee weapons available. As the defs and animations were already done and all I had to do was make a copy and swap the models, it took me only a day to implement 2 extra variants. Normally I'd have considered even more melee objects, however I'm still using the idTech 4 weapon catalog which is limited to 16 definitions and there will also be 8 arrow types for the Compound Bow, thus I'm sticking to 4 until later when a grid inventory may be implemented. Git now features a Baseball Bat (alternative to the Police Baton) and a Crowbar (alternative to the Combat Knife). The bat + crowbar will be the melee set of thugs and militias, whereas the baton + knife will be the arsenal of police and troopers. Currently there are no differences between the variants, but I plan to tweak the settings to make each one slightly unique. The binds are defined as follows: def_weapon1 baseballbatdef_weapon2 policebatondef_weapon3 crowbardef_weapon4 combatknifedef_weapon5 nano_simpleThe crowbar model was made by me whereas the baseball bat was created by Duion, both licensed CC0: https://www.blendswap.com/blends/view/66593 Obligatory screenshots below. The next step is to tweak the new weapons and do potential cleanups, then I should be able to setup a new HUD. Once that's out of the way, I may begin considering porting my old City map for Xonotic, which I'll be using to showcase the mod using an original FM.
  13. http://forums.thedarkmod.com/topic/18625-cyberpunk-mod-plans-contribution-feedback/page-3?do=findComment&comment=418227
  14. The police baton has now been implemented and is available in Git master. It replaces the blackjack, currently offering the same functionality under a modern aspect.
  15. Anything that means upgrading idTech 4 to support newer features sounds wonderful in my book! Hope it will be ready for mainstream TDM at some point.
  16. More like "just finished working on", but you can see it over here: http://forums.thedarkmod.com/topic/18625-cyberpunk-mod-plans-contribution-feedback/page-3?do=findComment&comment=418127
  17. It appears the combat knife got finished earlier than I expected. It's now available on Git, offering a new model for the same functionality as the short sword (attack from 4 directions, parry, etc). https://www.blendswap.com/blends/view/74407 Last on the list as far as new weapons are concerned (for the time being) will be the police baton. Since this one is so simple, I think I'm going to model and texture it from scratch. It can be expected around next week, especially since I can reuse the knife animations and won't have to make new ones again.
  18. Thank you. I know that feeling, very busy myself nowadays. I do hope you can find a few minutes to fix this soon though, so I can update DR and compile the latest version again.
  19. As I prepare to implement the Combat Knife (Short Sword replacement) and Police Baton (Blackjack replacement) now that the basis of the Compound Bow are there, I figured I'd share another part of the plan that's going to come up soon in my fork. Similarly to vanilla TDM, I plan to have a base story (cities, factions, characters, etc) meant to be expanded upon by each individual fan mission (unless they go with a fully original background which is of course okay). Now that the Xonotic cast was ported and is in usable condition, I've been thinking of how to divide each of the characters into factions. After pondering upon what would make the most sense, who should be the ally or enemy of who, so on and so forth... I've come up with a structure I'm confident will sit well. I figured I'd share it for critique, in case anyone can suggest any changes or better names and the like. First of all the model references, use these with the screenshots above to tell who is who: Umbra / Pyria: The skinny female and the person wearing a thin mask covering their face.Ignis / Seraphina: The male and female humans in the thick suit, both come in masked and unmasked variants.Megaerebus / Erebus / Nyx: The heavily armored cyborgs with round heads.Terminus / Termina: The heavily armored cyborgs with pointy heads, as well as hoses connected between their limbs and torsos.Gak: The green aliens with flat faces and antennae, they come in masked and unmasked variants.Draconi: The yellow aliens with horns that look like humanoid lizards.So without further delay, this is how I decided to divide them into groups and factions so far: Umbra:Description: The Umbra was created as a secret government agency, typically specialized in top level espionage and assassination missions. Upon discovering evidence of government corruption, members of the faction slowly rebelled. Today only a few Umbra exist, hiding in the shadows and plotting to take down the government. Alliance: Pro-government (if the action takes place in the past) or anti-government (if the action takes place in the future). If the action takes place during the time of the revelations, the Umbra betray the government and change alliance during the mission. Neutral toward Draconi, may be persuaded to form an alliance. The player is part of this faction, all Umbra are the player's colleagues. Models: Umbra, Pyria Color: WhitePolice:Description: The city police force, occasionally hired as guards by government agencies in areas of special interest. Responds to the government, by which it is tasked to maintain public order and enforce curfew hours. Alliance: Strongly pro-government. Sides with or against the Umbra and player based on their stance toward the government (see above). Will always attack Draconi, except for traitors who choose to serve the government. Some local police forces may rarely desert against the government upon proof of corruption. Models: Ignis, Seraphina Color: BlueTerminus Troopers:Description: The Terminus project is the result of a government experiment, who's aim was creating an army of superhuman soldiers. Their very existence is a secret and known only by a select few. They are tasked to guard secret government bases and objectives, as well as carrying out secret military operations and territorial occupations. Due to high expenses and the medical implications of the procedure, relatively few Terminus troopers exist. Alliance: Strictly pro-government. Sides with or against the Umbra and player based on their stance toward the government (see above). Will always attack Draconi, except for traitors who choose to serve the government. Always aids the police, with the exception of police forces that desert against the government. Models: Terminus, Termina Color: RedCerulean Guard:Description: Cerulean Guard is a security firm for hire, allowing groups to hire their specialized troopers as guards to defend their locations. Favored by the government, Cerulean Guard is subject to strict regulation and typically hired only by lawful firms and rich people. Their troopers are partially augmented, using older technology from the Terminus project called Erebus, which was released to the company by the government upon being obsoleted by newer augmentation technology. They are the competitor of Transgenic Security, although they typically serve rich and / or lawful groups in contrast. Note: The name Cerulean was chosen as a tribute to DeusEx - The Nameless Mod, which contains a faction for hire called Cerulean Security. Alliance: Independent, each group serves the faction it was hired by. If ever given freedom of choice, they are most likely to side with the government. Models: Megaerebus, Erebus, Nyx Color: CyanTransgenic Security:Description: Transgenic Security is the largest corporation dealing in genetic engineering. They produce semi-sapient creatures with high physical strength, which are sold to other groups who use them as security guards or to establish private armies. The company isn't seen well by the government and operates at the limit of legality, being the favorite choice of shadowy organizations in need of mercenaries thanks to lax legal requirements and cheap prices. Their only successful creature remains the Gak, after the company's failure to produce a stable Draconi (see below). They are the competitor of Cerulean Guard, although they typically serve poor and / or unlawful groups in contrast. Alliance: Independent, each group serves the faction it was hired by. If ever given freedom of choice, they are most likely to side with the Draconi. Models: Gak Color: LimeDraconi:Description: The Draconi were genetically engineered by Transgenic Security, and intended as a newer and improved version of the Gak. Due to their higher sapience and increased intelligence, the Draconi soon realized they're being used as slave guards by the humans, and decided to rebel and form their own faction. Upon taking over several Transgenic Security laboratories, Draconi have been able to continue their own production and create improved versions of themselves. The race has vowed revenge against both Transgenic Security and the government, although they harbor no ill intent toward ordinary civilians and groups that don't aid the government. Draconi are considered a public safety hazard and are actively hunted down by police, who are often overpowered by the creatures and unable to face them. Draconi usually live in poorer parts of the city, or the sewers and obscure alleys around the richer parts. Alliance: Anti-government, will also attack all police. Neutral toward other factions, will usually not attack unless provoked. Occasionally makes alliances with other anti-government groups, and may be persuaded to join the Umbra and player in the right conditions. On rare occasions, some Draconi may betray the group and work as special forces for the government (alongside Terminus). Models: Draconi Color: Gold
  20. http://bugs.thedarkmod.com/view.php?id=4742 The latest DarkRadiant commit in https://github.com/codereader/DarkRadiant ( 2ad55e91df66e11c5385ba40cf3615f56f7d00e8 ) fails configuration. Oddly enough the console doesn't output the exact cause, it only complains that Makefile.in cannot be found. I use Linux openSUSE Tumbleweed 64bit. Below is a console log with the commands I ran and the respective output. mircea@linux-qz0r:~/Downloads/DarkRadiant> ./autogen.sh;./configure --prefix=/home/mircea/Downloads/DarkRadiant/install --enable-darkmod-plugins libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:24: installing './compile' configure.ac:2: installing './missing' configure.ac:336: error: required file 'plugins/eclasstree/Makefile.in' not found configure.ac:336: error: required file 'plugins/entitylist/Makefile.in' not found configure.ac:336: error: required file 'plugins/undo/Makefile.in' not found libs/ddslib/Makefile.am: installing './depcomp' configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a sed that does not truncate output... /usr/bin/sed checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... gcc3 checking for ld used by GCC... /usr/x86_64-suse-linux/bin/ld checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyCurrent... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for msgfmt... yes checking for msgmerge... yes checking for xgettext... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/x86_64-suse-linux/bin/ld checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm - interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking for ANSI C header files... no checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/x86_64-suse-linux/bin/ld -m elf_x86_64 checking if the linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... no checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether g++ supports C++11 features by default... yes checking cstdint usability... yes checking cstdint presence... yes checking for cstdint... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking for inflateEnd in -lz... yes checking jpeglib.h usability... yes checking jpeglib.h presence... yes checking for jpeglib.h... yes checking for jpeg_start_compress in -ljpeg... yes checking for wx-config... /usr/bin/wx-config checking for wxWidgets version >= 3.0.0... yes (version 3.0.3) checking for wxWidgets static library... no checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for libxml-2.0... yes checking for sigc++-2.0... yes checking for libpng... yes checking for ftgl... yes checking GL/glew.h usability... yes checking GL/glew.h presence... yes checking for GL/glew.h... yes checking for main in -lGLEW... yes checking for main in -lGL... yes checking for gluBuild2DMipmaps in -lGLU... yes checking filesystem usability... no checking filesystem presence... no checking for filesystem... no checking experimental/filesystem usability... yes checking experimental/filesystem presence... yes checking for experimental/filesystem... yes configure: Will use std::filesystem instead of boost.filesystem checking for python-config... python-config configure: Checking for pybind11 headers... checking pybind11/pybind11.h usability... no checking pybind11/pybind11.h presence... no checking for pybind11/pybind11.h... no configure: Using the pybind11 headers shipped with the sources configure: Using the fmtlib headers shipped with the sources (header-only mode) checking for main in -ldl... yes checking AL/alut.h usability... yes checking AL/alut.h presence... yes checking for AL/alut.h... yes checking for ov_clear in -lvorbisfile... yes checking for alGetError in -lopenal... yes checking for main in -lalut... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating install/darkradiant.desktop config.status: creating install/i18n//Makefile.in config.status: error: cannot find input file: `Makefile.in' mircea@linux-qz0r:~/Downloads/DarkRadiant>
  21. I finally fixed it since. My issues were due to three things: You must merge all meshes into a single object with multiple materials for the Blender LWO exporter to recognize each, the meshes have to be triangulated upon export, and the collision mesh must indeed be a convex hull (no inward pointing faces) otherwise the engine refuses to recognize it.
  22. Awesome... thank you! You can find the defs themselves here, which I simplified to the best extent possible (every file starting with tdmu_weapon): https://gitlab.com/darkmodule/darkmodule/tree/master/tdmu_player01.pk4dir/def
  23. It's not very complicated but a little tricky in places. First of all you need the md5 IO script for Blender... I believe the one I'm using is this: https://www.katsbits.com/smforum/index.php?topic=520.0 Setup: You must have one or more mesh objects rigged to an armature as usual. Each mesh object represents a different material, the name of the material on each object represents the texture that material will point to. Additionally every surface on the mesh must be UV unwrapped, whereas the bones must be on the armature layer where the script expects it (layer 5 by default I think). For the md5mesh: Just select both the mesh and the rig, and export to md5mesh. Disable reorient as this seems to mess up the rotation. For the md5anim: On the control armature, select the armature action of the animation you wish to export. Make sure to set the start frame of the scene to 1 and the end frame to the last frame of that animation! Then once again select both the mesh and rig, and export to md5anim. Again disable reorient as this seems to rotate it on its own. If you want an example setup, the ready blend sources of the bow and Xonotic characters are both included in the repository. You can find them here: https://gitlab.com/darkmodule/darkmodule/blob/master/tdmu_player01.pk4dir/source/md5/weapons/compoundbow/compoundbow.blend https://gitlab.com/darkmodule/darkmodule/blob/master/tdmu_ai_troopers01.pk4dir/source/md5/chars/troopers/troopers.blend
  24. The current animations were intended to "just work", as the priority was to have the new bow functional after so long in development. I plan to go through them again and add more detail later, now that I know how to export. I may want to adjust the pose of the hands too, especially since the right elbow is a bit too close to the camera and higher than a real person would probably be inclined to hold their arm. The left hand is holding it as intended though, there's a little pole it's holding it by if you look closely. I wanted the bow to be held horizontally rather than vertically, both to try something new and make it look more weapon-like I guess.
×
×
  • Create New...