From "Review Information v1" originally written by Thendar
---+-o0-A Guide for Proofreading and Reviewing Zones, V1 -0o-+---Back to the index
TYPOS/SPELLING/GRAMMAR/SPACING: This is probably the FIRST thing you want to do. It is easiest to do by Editing the.wld, .obj, .qst and .mob manually. After you do this, you will want to walk through every single room to make sure that the spacing is still the same and no room descriptions wrap around. This is very important because there are a few mudders out there that do not use ZMUD, thus it won't wrap and will show incomplete sentences. No symbols, letters, abbreviations, or shortcuts should be used instead of the proper word. ANSI: Make sure the ansi is compensated for in the room description. Remember that ansi takes up space in the editor, but not in the actual room descriptions. A lot of zone writers miss this, which lends to oddly spaced zones. Blinking ansi is really annoying and should be used sparingly. DOCUMENTATION: Take their .txt file, place a line at the beginning of it. Write all your changes, comments, etc. above this line. No need to document minor spelling fixes, or ansi fixes. Anything that changes a mob, a stat, a bit/flag, a full description on anything, a shop, a quest, stats/ etc. MUST be documented. Save this file as _review1.txt, and toss it in with the zip you send back to me. BALANCE: Keep in CAREFUL consideration what level is meant to visit the zone. If they mobs do not fit the theme, or the equipment does not, it will most likely need to be changed. Potions and staves are a very borderline issue here concerning the types they use. Balance is best left up to me, because I know what needs to be changed and what does not to keep almost all of the zones in check. If you think something is absurd please note it in the _review1.txt. ZONE EXITS: If there is no zone exit try to discern what room in the zone would be the best point of entry and make this exit -1. PROCS: These will most likley not be added right away to the high level zones, thus newbie zones will rarely get them unless we somehow find a surplus of time on our hands. The approval of special procedures on objects and mobs will be at my discretion. REPOP/BANKS/INNS/SHOPS: Please make note of what VNUMS these are in if not noted in the text file. You may have to guess at a good repop place, if there none given, suggest a room that would be suitable in your documentation. QUESTS: This is something I tend to miss overall. If the quest is blatantly easy, or meant for a particular person, odds are it is meant for that writer's character and his/her friends to benefit solely from. If you happen to notice an odd quest that like no one would ever find a way to guess at, please note it. AGGR_GOOD/AGGRO_EVIL: This is something that we have to watch out for too. Goodie writers often write zones so that evils cannot raid them (Classic example: Air plane). Make note if this seems really suspicious. ALIGNMENT: Another thing you have to watch for. Often goodies write zones that have evil mobs at -1000 and good-themed mobs at - align, so that they can cheese their alignment to 1000 easily, and so that paladins and rangers have no problem with their experience. If you find something suspicious alignment-wise, change it and note it. TAIL EQ/HORN EQ/SADDLES/Special slots: These are novelty items, at best. They should not have any major stats unless they are an artifact. NOMOB ROOMS: These are often set by players so that those in the know will have a way to cheese mobs and hide from their tracking. Make sure this flag is not used just to be gratuitous, but serves its purpose zone-wise. Note if you changed these. MATRIXES/RARE LOAD PLACES: These need to be no teleport, no summon, no gate. Preferably a magic room so that the mobs can spellup. No player should be able to reach these rooms. Make sure there are trap rooms for rare loads. RARE LOAD MOBS: Make sure these are made no summon. DESCRIPTIONS: Make sure all mobs, objects, and rooms have descriptions (mandatory), extra descriptions are optional. Make sure all objects have long descriptions. Make sure there is little to no vulgar language used. Material and craftsmanship on objects needs to be set or the zone can be sent back - note if this was neglected. Room descriptions as a genereal rule need to be over 3 lines. NORENT: This flag should be used only for quest items and keys unless otherwise stated in the .txt file. WEAR FLAG ON OBJECTS: Check to make sure all objects meant to be taken (especially keys) are takeable. Often writers put objects on mobs, in rooms, or in objects and don't notice they forgot this flag. Very important flag. PORTALS/TELEPORT ITEMS: Unless otherwise noted in their .txt, make sure portals are not takeable, have -1 uses (infinite), and are allow_all (anyone can use). HEAL ROOMS: Note these if setbit in peculiar places. If I left out anything I will add it in the next version of this. I've included the most recent zone guide. You may want to periodically check the webpage for more recent guides and version of Dikuedit. Thendar. -------------------------------------------------------------------------------- ---+-o0- A General Guide for Reviewing Zones, Version 8 -0o-+--- "How to Make Basternae2 Glow in the Dark." Last updated: August 5, 1999 EMAILS<EMAIL_ADDRESS>zones (and important admin questions<EMAIL_ADDRESS>general stuff Please make note that basternae.idleminds.org doesn't work Anymore, use idleminds.org<EMAIL_ADDRESS>coding inquires. Watch out, Xangis may bite if emailed too much. :) THE WEBPAGE FOR REBUILDING: http://basternae.org Check this page out for our new codebase (Magma), recent versions of this guide, and other various stuff about the rebuilding. Also, the version of DikuEdit (by Tavril) we prefer is on this page. We will, of course, take zones written in any version of DE. EDITOR (See the Webpage note for a version): Dikuedit (written by Tavril of Duris) is our current editor. Eventually, we will have our own editor when Xangis has time (right now I'm more concerned with getting a stable codebase). The DOS version of the latest DE is slightly bugged, you cannot look at mobs or objects in it. The Linux and other variations of it work just fine, and older versions of the editor are fine too. ***Update on the Editor, 3.00c was fixed by Timken, with a few extra bits added by Xangis. Thus you can look at stuff in the DOS version now, but I'm sure a few new bugs are going to show up. Keep checking the Magma site for new versions of Dikuedit, and email Xangis any bugs in the new DEs. ***Update: Get version 3.00d. It has craftsmanship, and added are some new class numbers for mobs, and the bank/inn room flags for the hometown writers. OLC (Online creation): Is NOT used by us.  Also uses memory that could be better used elsewhere. Besides, our editor, Dikuedit, is an off-line editor. :) THE CHANGES IN REBUILDING: A lot is still open. There will be some changes, but overall we will stay similar to Basternae race and class wise. In regards to player races, we are initially adding the races we receive hometowns for. Minotaur will return. Conjurers will be re-designed into Elementalists, and Clerics will have racial specializations/quirks. Vey, Ski, and I have also discussed some more fun stuff that we may just save for a rainy day. :) A NOTE FOR OUR OLDER ZONE WRITERS: If you have an older (pre-Basternae zone) that you would like to donate to our rebuilding, get in contact with me. I'll need a copy of your zone and a letter of consent from its original writer for us to use it. A NOTE ABOUT OUR CODEBASE: The code is still very young at this point. We aren't going to take the time out of making something important for players to make a proc for your zone right away. If it is in the .txt file, whenever we get time, we will get to it. We had to start from complete scratch with Ultra Envy, and Xangis's been doing insane ammounts of work each night to make this thing happen. Patience guys, and we'll have something you guys will simply love to play. :) If you have ideas about things to code, send them to Xangis. THIS GUIDE: I realize a lot of this guide won't apply to some of our more experienced zone writers who have been with us through the years. Some of it will. Since I'm going to be proofreading each one of these, I figured it would be a good idea to at least level with each other on balance so I don't need to change eq stats, mobs, etc for balancing. In regards to your zone theme, I won't change a thing. Just keep it within taste (not too obscene, perverted, etc. or I'll send it back). SUBMITTING YOUR ZONE: Send finished zones to<EMAIL_ADDRESS>Please zip this when you send it. I do not need your *.dwd. What I will need are your *.set, *.mob, *.obj, *.zon, *.wld, *.qst, *.shp, and *.txt (important!). You may not have all of these, as not every zone has shops (.shp) or quests (.qst), but send what you have. NAMING YOUR ZONE - IMPORTANT! Please do not send me your zone named forest.zip, ruins.zip, caves.zip, dungeon.zip, etc. There are so many forest/ruins etc zones in the mud, it doesn't help me one bit when I try to go back for your zone and can't remember which of the forest.* it is. Try to name the files for your zone something easily understandable, like HumanHt or something if it's the human hometown, or something unique that will make it easy to discern it in a directory of 60+ other zones. ---+-o0- Item Stats -0o-+--- At this time, we won't be adding more stoneskin eq, a buttload of max_con eq, etc. Please keep this in mind. I'd like to go back to pre-Shabboath equipment balance in the game. If you are using the newer editor please be conservative with the special bits. ATTRIBUTE BONUSES/PENALTIES: I'd like items to not boost a stat more than 1-4 for lower level equipment, 5-8 for higher. With very few exceptions, go over that with your own judgment. And remember, offsetting stuff with negatives doesn't necessarily make an item a bad piece of eq. I don't want any max_con, max_anything really in lowbie-mid level zones, unless there is a very special reason. Include this in your .txt if it is _necessary_. ARMOR VALUES: Below is a list of some standard ranges of AC values for the various equipment wear locations (that Xangis wrote up).  "AC is based on the 100 to -100 point system. With a full suit of adamantine equipment of high quality, a player would have an unmodified AC of about -60. When dexterity bonuses, spellups, and silly magic earrings/rings are added, a player can easily get to -100." cloth leather steel mithril/adamantium/duralithite badge 0 0 1 1 head 1 3-4 7 9 earrings/tail 0 0 1 1 eyes 1 1-2 3 4 face 1 2-3 6 7-8 neck 1 2 3 4 body 2-8 5-12 15-22 25-27 about body/cloak 1-3 4-6 10 11-13 on back 1-2 2-3 5 6-7 arms 1-3 4-6 10 11-14 wrist/horn 1-2 3-5 7 8-9 gloves 1 2-3 5 6-7 finger 0 0 1 1 waist 1-2 2-3 5 6-7 legs 1-3 4-6 10 11-14 feet 1 2-3 5 6-7 shield 1-3 4-6 10 12-15 Total averages: 17-35 45-71 120 143-161 "If you don't like these numbers, remember that magic changes everything." WEAPONS/DAMAGE/HIT: I'd like to keep the weapons, hit, and dam all relatively low on easy to obtain items. I don't see a need for an _earring_ to give +3 dam unless it's magic, but I can see a spiked bracer inflicting some combat pain. I don't see any difference on these unless it's an artifact, in which case 1) talk to me about it, and 2) I don't think Xangis has the time yet to work on them. These are the _maximum_ stats on these items (unless it's an arti). dice hit dam notes 1h sword 4d5 5 4 sword/whip/whatever 1h sword, !dual 5d6 5 5 (add weight to the object) 2h sword 6d6 6 6 lance/battleaxe/etc. dagger 4d4 4 4 remember, stab hurts. An example with a 2-handed sword would be: Newbie swords: 1d4 - 1d6 Okay swords: 2d6 - 3d4 Good swords: 4d4 - 4d7 Badass swords: 5d6 - 6d6 An example with a dagger would be: Newbie dagger: 1d3 - 1d5 Okay dagger: 2d4 - 3d3 Good dagger: 3d4 - 4d4 Badass dagger: 4d5 - 4d6 Etc. For weighting the one-handed sword so that it isn't dualable, I'd give the example of the artifact 'light and darkness', which has a weight of 20. SIZE/QUALITY/MATERIALS: See the frequently asked questions section for the item flags, Xangis details what he wants done with this. WEIGHT: This does matter. It makes a sword not dualable, for instance. It makes players encumbered when they carry 32 sets of adamantite platemail, or not able to move at all! EXTRA BITS/FLAGS: At risk of repeating myself, please don't add stoneskin eq, etc. If you absolutely think your zone *needs* this item, explain why in the .txt file about your zone. TAKEABLE: Make sure that all items meant to be taken by a pc are takeable. Quite often people will put items, which aren't worm by mobs but meant for player characters, in an inventory and forget to flag it takeable. People often forget to make keys takeable as well. ARTIFACTS: At this time, we still have the artifacts from EP, AP, FP, ethereal plane, Shaboath, Vecnas, and TT. It will be a while for us to add these procs, let alone new ones for new artifacts. If you absolutely must have an artifact in your zone, give me a good reason in your .txt file. ITEM DESCRIPTIONS: Please make sure your objects have a main description (mandatory), you can add extra item descriptions if you like (optional). All descriptions for objects are made under the 'extra object description' menu, in the main edit object menu. COST/MATERIAL/CRAFTSMANSHIP: The mud now ignores what value you set for the cost of the object. Yeah, I know, no more making your object 666 plat, etc. The shops now calculate price based on the material and how well it has been crafted. Please keep your objects true to this, don't make a leather eyepatch material emerald just to make it cost more. Also, if it was crafted like a two-year-old made it, it will be worth less than a one-of-a-kind quality craftsman. ---+-o0- The Zone Itself -0o-+--- THE .TXT FILE ABOUT YOUR ZONE When you submit your zone, include a .txt file about your zone's theme, the intended level of players/how many it takes for your zone, your Email, your player name, and any extra things you want me to know about your zone. I don't want your real name for the credits, more appropriate would be your player name. formal name of your zone: name for credits: your player name: your email: room number that connects to the map: theme/story: notes: If it is a hometown, also include the following: Repop room vnums (and which classes repop at what room): Bank room vnums (even if you flagged yourself already): Inn room vnums (even if you flagged it yourself already): Shop room vnums: Deity information about your race you've included: Example: Lloth, wicked goddess of chaos. Likes spiders and finds males inferior. Any additional notes: THEMES: I'd really like zones to have a purpose. Even if it's as generic as a sacred temple overrun by some demon, try to make a reason for mobs to be there rather than a random grouping of mobs. Also keep in mind the level of your intended players. Level 1s shouldn't be fighting demons/ethereal bossmobs. Level 50s shouldn't be fighting killer squirrels. Please keep zones within Medieval fantasy (like AD&D). Please include your theme idea in the .txt. TIPS ON THEMES (for those who lack inspiration): If you have a problem making a purpose for your zone, and are simply uncreative, pick up a newspaper and flip through the stories. Watch some television, or read a magazine. Even looking at some fantasy art on the net can give inspiration to a story. I _do_ however want to keep this based loosely on Medieval fantasy (like AD&D). I'm not however an AD&D "Dungeon Master" nazi for rules/themes/expansions. Use your imagination and if it works, run with it. Please do not use names, places, items, etc straight out of D&D, White Wolf, Games Workshop, FASA, etc. Be creative!  While it looks really spiffy, it's used in the code, and if you even think about using it in your zone descriptions, the mud will spit your zone back out and throw an awful temper tantrum. Don't use this please! COPY DEFAULT ROOM (duping rooms): I'd really prefer that you use this command minimally, to prevent repetitive rooms in a zone.  Alter the room name, or change the room description noticeably, etc, if you absolutely have to use this. If you submit a zone with a lot of copied rooms, I'll send it back to you to fix the rooms. SPELLING/GRAMMAR/Things that annoy Thendar: If you would briefly look over your zone before you send it to me, and catch any obvious spelling or grammar errors, that would make my life much much easier. Oh, and please nothing too profane. Thanks. Do not use abbreviations, such as & for and, or 'btw' when you want to say 'by the way'. If you want to say 3, please write out the full 'three' instead of using the number. Please CAPITALIZE room titles, no need for punctuation in the room title. Refrain from using _underlines_ and *asterisks* to emphasize... if it is really necessary, use ansi to draw attention to this. DIAGONAL EXITS: Xangis asked me to ask you folks to use as few diagonal exits as possible. INDENTING THE ROOM DESCRIPTION: ...is a good idea.  I'd like three spaces on your first line to start the room off. As a guideline, try to write about three lines as a minimum for each room, unless there is a reason. Feel free to make rooms as long as you like, but really short room descriptions make it look as though the zone was either not finished or hastily thrown together. PORTALS: Make these ALLOW_ALL if everyone is to use them. If you want to limit this for some reason (like the necromancer portal), make it ALLOW_WHATEVER. This should be a very rare instance that it is not ALLOW_ALL. Make sure the portal is not takeable, and that it has -1 charges to enter. SECRET EXITS: Make sure you hint these in the room descriptions well, or somehow give hints to the average player. DOORS: Make sure there is a key if you make the door locked and not pickable. Make sure that key is takeable. If the "key" is a word, make sure there is a way to discover that word, by quest or extra room description of some sort. QUESTS: Please make this something the average player can figure out. I don't want quests to turn into an elitist thing that 5 people on a mud of 300 know. Mobs that are aggressive cannot give the quest messages. AGGRO_EVIL/AGGRO_GOOD mobs: Remember when making quests, that if a mob is aggro_evil an evil player cannot complete this. If this is the case, there had better be a really good reason in the .txt file. Like I said, I don't want this to be an elitist thing, but rather something any *good* or skilled player can do. Please don't use the aggro_one-side-of-the-racewar on every mob in your zone. Even if it may be a hometown, I'm looking for playability not necessarily reality. USING EXTENDED ANSI/ASCII IN YOUR ZONE: I would highly suggest to not do this. There's a lot of folks who use term programs that can't handle this, and it will turn out as a garbled mess. If you absolutely can't resist, make sure it is used on nothing essential, and only in extra descriptions. INTERESTING ARTICLE FROM A NEWSGROUP CONCERNING ROOM DESCRIPTIONS: "> >In article<EMAIL_ADDRESS>sthrngypsy > >Brief is useful for one thing: Speedwalking. That's the only time I'd > >use it as a player, or encourage it as an Imp. I guarantee that when > >I'm building, I include things in the Long that are critical to the > >game. > > Brief is invaluable when logging rp. I don't need dozens of copies > of the same room descriptions sitting on my hard drive, especially > if they're as long and detailed. Brief can be made less "appealing" by encouraging builders to continue working on their areas. Suppose you've got an outdoorsy area -- natural disasters and the weather are likely to shape the terrain, so why not drop a creek in the middle of what was once just rolling hills? A flood could do that :) Keep the area fresh, and players will be FORCED to keep their eyes open, so to speak, unless they enjoy going on autopilot, and not knowing where they'll wind up ;)" ---+-o0- The Mobs -0o-+--- MOB BITS: Remember, a hasted mob can waste a newbie. A hasted mob in the astral plane doesn't mean squat. Keep the location and the players you aim to cater your zone to in mind. Stoneskined mobs in newbie zones is kinda silly. SHOPKEEPERS: Good idea to flag them sentinel. Shops are made by editing the mob that will be the shopkeeper, and where it says Q/S will be the options for quest/shop info. MOB HOMETOWNS: This is actually ignored by the MUD, since it is a waste of memory and serves no purpose. Don't bother setting this value. If we need to know a hometown we will just be stereotypical and assume their hometown is the race's hometown (if one exists). MOB MONEY/EXPERIENCE/THACO/AC/HPs/DAMAGE: Don't waste your time setting *any* of this. The MUD completely ignores this information, and sets it itself. Besides, most zone writers really shouldn't have access to setting these anyway. MOB CLASSES: There are some classes that aren't added to Dikuedit yet that we will still use from Basternae. This will used under the menu where you choose the mob's class. Class # 17 - Illusionist. # 18 - Fire Elementalist (Mobs can still be conjurers too.) # 19 - Earth Elementalist # 20 - Air Elementalist # 21 - Water Elementalist ADDITIONAL MOB RACES AND MOB AI: Here's a list of the new mob races supported by us. It will say unrecognized. No biggie. In addition, we support MobProg 2.1 for the advanced and rather masochistic zone writers to create mob artificial intelligence. If you have questions about MobProg, ask Xangis. Though DikuEdit will not recognize them (They will show up as unrecognized species), the following mob races have been added and will be recognized by the MUD: Werewolf LW Half-Dwarf D2 Half-Kobold K2 Flind FL Kobold K Hobgoblin HB Rat AR Object O Mist M Worm AW Hydra DH God GD (for planar zones. use discreetly) Harpy HP Bear AB Neogi NE Bat BB Plant VP If you would like to have a mob race added to the MUD, email me -- adding a race is a fairly easy task. Send inquiries to Xangis<EMAIL_ADDRESS>DRAGON BREATH: This is relatively easy to set. Let me know in the .txt file which mobs are badass dragons that breathe. Also, set their mob keyword to _BR_S_ (for shadow breath), _BR_F_ (fire breath), etc. Options for breath: Shadow, Cold, Fire, Poison, Ice, etc. (Yet again, use this discreetly, newbies shouldn't be fighting mobs that breath shadow and kill them instantly.) ---+-o0- Writing a Hometown -+-0o--- There are a lot of considerations in making a hometown that differ from making any other zone. For instance, how high a level should a player be able to get in a hometown? What equipment can be in a hometown? What zones might be related or near the hometown? How 'safe' should a hometown be? Should it be completely unraidable? These are all things you have to keep in mind. I don't want people sitting in their hometowns for most of their time on the mud because it is the best place to be. I'd prefer players maybe getting up to level 20 by mobs, then after that it get much harder or leave for other zones. I'd like the equipment to stay basic to some extent, so people have desire to do the other zones whose purpose is equipment. If it helps, think in terms of AD&D. If a race seems chaotic, odds are they would have some agros. If it's lawful there would generally be a reason for a mob to rip your head off. Just because a hometown is 'evil' doesn't justify agros. Make a reason for mobs to want to eat the players who live there if it is agro. I'd like, however, the goodie hometowns to have fewer agros. SHOPS: Players need a place to buy the basics as a newbie. I want the equipment in the shops to stay simple and geared to the lowbie player. Things a player would need to buy: water, food, spellbook, quill (use pen in the objects), sword, dagger, basic armor, totems (if there are shamans in your race or hometown). Other things that could be bought: rope, disguise kits, torches/lanterns, backpacks, bags, *newbie* magic items. Keep this within reason, and prices in reason. Keep the basic food at like 1-5 copper, spellbook at 1-5 plat, sword at 5-20 plat, armor 15-25 plat. INNS/FOUNTAINS/BANKS: Inns are cool, make one. :) If you add a fountain make it basic water. Sell other stuff if you want, but the free drink is just water. Oh, and add a bank. Put the vnum for banks and inns in your .txt file, those will need to be added by a coder. ******UPDATE!: Dikuedit now has inn and bank flags in the program, that you can Set these with. If you do not have the new dikuedit, I can set this, but It can save me some time. Please still note where these rooms are for me. JUSTICE MOBS: I'm not sure what Xangis has planned for justice at this time, but if you want to add the mobs, and then describe how you want justice to work in your .txt file, go ahead. Remember a Justice clerk to report to, a few mobs that are flagged witness, a jail area, etc. Remember to lock the jail, !bash, !pick. Put the key on the High Justice Clerk type. SHOPKEEPERS: This should be the options Q/P on Dikuedit for mobs. You make the room then the actual shopkeeper has the shop information. Make these all a relatively high level, but not something people will take out all the time for experience. I'm still toying with the idea of making all HT mobs over level 25 !exp. Good idea to make them sentinel as well, so they stay in their shops. REPOP PLACES: Remember to add areas for the players to repop, be it the inn or an actual guild area for that class. I would prefer not in the inn, because it will make players learn their hometowns faster, and will keep some of the spamkilling that occurs to a minimum. TEACHERS: Make some mobs teachers that the players can get spells, skills, etc. Like the arch-mage in the proverbial tower. These are also good mobs to run a quest from. EXPERIENCE: I would like some mobs that a level 1-10 can kill for experience. Those are the levels players learn their hometowns at, so you misadwell add some experience to invite them to learn it. I'd prefer players not use the hometown for over level 25 experience, for the most part. A NOTE ON RELIGION: If you are planning a particular deity for your race, let me know. We are working on specializing clerics for racial quirks, and if you have something planned for you zone, I can certainly take that into consideration. ---+-o0- Frequently Asked Questions -0o-+--- "HOW MANY ROOMS SHOULD A ZONE BE?": This applies to other zones too. Don't make zones big for the sake of making them big. Make zones as many rooms as you need to make your theme/environment. There is no limit, but I don't really want to proofread a 500 room zone :) I'd prefer less than 300 rooms max, if it goes over there should be a really good reason why. Players can get bored and very lost in a large zone. It's awfully frustrating for everyone. Here's the rule of thumb for you: use as many rooms as you need to make a quality zone, without duplicating too many rooms, and making it a unique environment people will have fun in. "HOW MUCH OF THE ITEM FLAGS ARE NOT USED BECAUSE THEY WERE GEARED TOWARDS DURIS'S SILLY COMBAT SYSTEM?" This was a damned good question I had to forward to Xangis. He replied: "Pretty much all of the extra, wear, anti, anti2 flags are used. The main wear location/coverage location/thickness/misc flags for armor under the miscellaneous stuff will not be used. The apply stuff under the miscellaneous stuff will be. Armor class is used. Size, material, and craftsmanship will also be used in the future, but are not used now. You can safely leave the size and craftsmanship at the default value, but I would prefer if you set a material. It is not a requirement and zones without materials set will not be turned down, but it'll make life alot easier for me if you set the material type. Damage resistance bonus will not be used. Volume may be used, but it will default to be the same as the weight. If you have oddly-shaped or large but not heavy objects you may wish to set the volume. It is not really important and zones without volume will not be turned down, but it'll make life alot easier for me if you set the volume. Condition will be used, but that can always be left at the default, unless for some reason you need to have damaged equipment in your zone. For now, you should set the worth.... eventually the MUD should be able to calculate the worth of an item based on the material and the flags and abilities and level of craftsmanship of the item, but it will be a while before I get all of that worked out." "ARE THERE ANY ASPECTS OF DIKUEDIT THAT AREN'T REALLY WORTH THE TIME?" Yes. No need to add things like extra room descriptions unless there's really a reason. Extra Object descriptions aren't necessary, but this is a great tool for quests and special objects! Feel free to add these if you have the time.  If you want something added in a zone, please add it. I don't really like making one zone marker several zones, it gets sloppy like Arachdrathos was. I would prefer to add it near that zone marker, but not attached if possible, but attaching can be done if there is really a need. "I'M NEW, AND HAVE NEVER WRITTEN A ZONE BEFORE." It's easy. Dikuedit is surprisingly user-friendly. It works like you are in the zone, walking around in it, looking at rooms, mobs, items, etc. The help command will give you a list of commands, as will DE.doc. If you are new, it may be best to try to write a small 50 room low-exp zone first, to get the hang of writing with Dikuedit. "HOW DO I DO COLORS?" Ansi code is easy to do. Here's from the basic ansi guide on the mud: First things first. The main thing to understand when using our version of ansi color is: you can SET things, or CLEAR ALL (back to white on black), but you cannot just turn off bold, or blink. There are 4 types of ansi control sequences: & | - reset everything, back to 'n'ormal (white on black). This is also done for every newline, to eliminate 'bleed-through' colors. &+ - set foreground color. If the color letter is uppercase, the BOLD (bright/light) bit is also set (and will STAY set) until either a newline, or & is done. &- - set background color. If the color letter is uppercase, the BLINK bit will be set (same as for &+ above). &= - set both background and foreground color, exactly the same restrictions as for setting foreground and background separately. w - white l - black r - red b - blue g - green y - yellow c - cyan m - magenta (+w is normal text, +W is bold text) So basically &n&+r makes dark red, &+R makes bright red. If you did &+Rcrim&+rson, the second red wouldn't show up, because the bright would 'bleed'. You need the &n before the darker (lower case) colors when this happens. "HOW DO I MAKE A DOOR LOCKED WITH A KEY?" This is actually pretty easy. First, create object, and make that your key. (Go to option I from the edit object menu, From there, option A is object type. Select A, and type ?. You will see that 18 is the code for a key, select 18 for object type. It will then give you things like percent chance to break, etc.) Then edit your room. Edit room, and go to Option F, Edit room exits, and choose the direction you want the door. Option C will toggle the door open, closed, lock, !bash, whatever. Option D will let you choose the key (type ? if you don't remember the object number, it will give you a list). You need to do this on both sides of the door if you want it lockable from both sides. Now when you look in that direction in Dikuedit (as if you had farsee), it will show what the door flags are, as well as what key opens a door. "HOW DO I MAKE A PASSWORD FOR A DOOR INSTEAD OF A KEY?" This is easy too, but impossible to figure out in Dikuedit. Basically, you set the door to locked, no key, not pickable. Set the key object to -2. Make sure the door is closed and locked. Make the _last_ keyword in the door keywords the password. Make sure this is something the average player can figure out.  (BALANCE...) Most likely. Will I change theme? Nope. The main thing that is usually changed are spelling errors, grammar errors, and equipment stats may get tweaked. I don't mind every mob being clothed, but if all the mobs have equipment with awesome stats, I'll have a problem with it :) A few considerations to think about would be: Is this zone for experience for equipment, quests, or a potion level? What level are the expected players, and what level equipment would be appropriate for them? Do you really need 20+ pieces of equipment in all the high level zones so that everyone gets something? No, but if you do, make sure not all of it kicks ass. Negative stats can balance items nicely, too. "WHAT DO YOU MEAN INDENT, AND CAPITALIZE TITLES?" I know this must be hard to understand, it's basic grammar :P Basically, imagine the room title is a proper title, and the room description is a paragraph. There is no need to capitalize 'a' 'the' 'and' 'of' 'in', etc unless it starts the title. Here's an example: In the Northwest Corner of Shaboath As much as the flowing, smooth architecture of the aboleth has any corners in it, this is the northwestern edge of the city. The walls curve to the east and south around you, with the constant flow of water beneath your tenta...er...feet. The description is indented, the title capitalized. The room descriptions is over three lines long, spelled correctly, with decent grammar. "WHAT DO YOU CONSIDER BALANCED?" Well, I try to keep things relatively balanced overall for all zones on the mud. Thus, if your zone is meant for levels 20-30, and you have a ring that is +2 hit, +2 dam, and Kelek's Cavrerns's 'crystalline ring' is also +2/2 but a more difficult zone, people will always choose the easier route. And there would be little reason to do Kelek's for that ring. So, things get balanced to make sure most zones have a fair chance of getting players. I don't want one zone to be the badass zone of all equipment so players don't need to go anywhere else. That gets awfully boring and defeats the work of all the other writers. The zones I tend to use as guidelines for balance are: Keleks, Du'Maathe, Kuo-toas, Clawed Caverns, Fire Plane, Obsidian Citadel, Yuan-ti, and/or Ice Tower. Also, location of the zone, agros, raidability, player level, etc. play a factor in what justifies balance. If the zone is mainly for exp, let the players find bigger equipment elsewhere, while getting minor eq as a diversion to long exp runs. If the zone is for equipment, think about balance pretty heavy, how raidable it is, and what level of players you are catering to. If the zone is for quests, potion levels, etc, there really isn't a reason to add heavy equipment or a ton of awesome exp, because players have to be there anyway. The best way to think about it, is to remember back to when you were a complete newbie. I remember that the dumb flower faerie robe and flower wreath was like the coolest equipment to me, because it had colorful ansi and I originally came from a mud with little to no ansi. Low levels aren't really about kickass equipment. Even as high levels, players will wear stuff if it looks too darn cool (despite mediocre stats) and they have a spare slot. ---+-o0- Zones we need -0o-+--- June 1999 We have to replace all of the old 'Duris/Sojourn' zones, but we can keep the Basternae zones. Thus we have all the planes, Shabboath, Vecnas, Mansion, Oasis, etc. We also get to keep Xueqin's zones, so Transparent Towers, WS, and Grey Hometown can stay. What we do not have are hometowns, and lowbie zones like Moria/Bugbears/AKO/Teka/Braddinstock. We also can use people to proofread zones, if you are interested in this, talk to me. If you are working on a zone for us that you fully intend to finish, let me know what you are making so we don't have 3 hometowns for this race but none of the others. July 1999 At this point, all the hometowns are more or less taken, _but_ if I get 2 hometowns of a race, I will either 1) take the better of the two, or 2) add both and give the players an option in their original home. Most likely the latter, since I'm a softie and don't want to turn down anyone's hard work. July 1999 We still need Ogre and Duergar hometown, and I'd like a second Centaur hometown. High level zones are not priority, nor really needed badly. See the builder's meeting on the webpage! This answers a lot of quest- ions for both the beginner and the experienced zone writer. It also gives a sneak preview of things to come! :) July 1999 Cool, we got Duergar and Ogre taken care of like that. Still could use a second Centaur. Cy was kind enough to give us permission to keep Du'Maathe. If you have any older zones you'd like us to keep up for the players, send me an email of permission for that zone. July 1999 I've gotten a few zones from people who've said 'I wrote this like 6 years ago and it needs tweaking and isn't finished, feel free to go ahead and change em.' If anyone wants to revamp one of these zones (I have 2), feel free. August 1999 All is good. Any zones now are fine. Pre-Alpha is ready to rock at <IP_ADDRESS>, port 4001. Email registration only - it is not yet open to the public. ---+-o0- DISCLAIMER -0o-+--- When a zone is submitted, it becomes 'property' if you will of that Mud. I don't mean in a sense that you can't do whatever you want with The zone, but we need the ability to change and tweak things as the Mud goes on. We reserve the right to any or none of the following: balance your zone via equipment, balance experience, add equipment, remove equipment, run quests in your zone, or add quests that point to your zone, add your zone to the map or another zone where we feel it is best, add or remove inns/shops/banks, move repop places, etc. I'm not saying this to be mean. I don't make a habit of re-writing what folks send me. But in the past there have been zone writers who whine and cry to this day over a ring that was changed by one dam point, a mob made agro that was not before, etc. Seriously guys, this is supposed to be fun.  -Thendar, Lord of Illusions.


- Emirates ID Card Integration and Dynamic copay feature to update copay and deductible details per patient by insurance card enabling quick registrations.
- Rate Definition Management by HAAD factor pricing/DHA and Network.
- Automated exclusion billing at cash rates
- Advanced Insurance Features with full revenue cycle claim submission and remittance reconciliation integration with Shafafiya (Abu Dhabi) and DHPO (Dubai)
- Advanced GCC-VAT Taxation Rules Support
- Multi-Sponsor support
- Member ID validation by sponsor
- Fee For Service, Per Diem and DRG support for Abu Dhabi out-patient, day-care and in-patient billing.
- E-Prescriptions (ERx), Dubai
- Pharmacy Business Management, Abu Dhabi
- E-Authorization integration with Shafafiya (Abu Dhabi) and DHPO (Dubai)
- Prior-Authorization status tracking using Pending Prescriptions Dashboard
- Self Pay claim submissions for cash cases and medical tourism regulatory compliance for claim submissions
- Medical Coding support ICD, CPT, E&M, Observation, LOINC, SNOMED, HCPCS
- Codification screen for medical coders for accurate claim submission and reduce claim rejections
- Resubmission Flow by Resubmission Type
- Claim History
- Insta to Accumed Integration for coding and claim submissions.
- Malaffi HIE Integration, Abu Dhabi
- Resource Scheduling (Doctor, Service, Theater and other secondary resources such as equipment, surgical team, or other generic resources)
- Patient Registration
- OP Consultation EMR with templates, configurable form design and prescription favorites.
- EMR View - a detailed patient medical record repository.
- Report Builders with Graphical Reporting
- Messaging (Email / SMS) - SMTP / Web-API based
- Bed Management (Admission, Discharge, Transfer)
- IP-EMR (Documentation, MAR, Notes, Ward Activities)
- Pharmacy (Sales/Issues)
- Inventory(Procurement, Store Management, User and Stock Transfer Indenting)
- Diagnostics (Lab, Radiology)
- Services and Procedures
- OT-EMR (Form documentation)
- Patient Portal (plug the Practo widget to your website or custom mobile app).
- Notification Alerts (to Doctors for Diagnostics Reports notifications).
- Pending Prescriptions Dashboard (to view the trail of every pending prescription and their respective authorization, patient readiness and scheduling status).
- Coder Claim Review (to reduce claim rejections and coder-doctor turn around)
- Central Lab (a multi-center stand alone lab center which can process samples and conduct tests collected at other centers).
- Packages (Health Check, Surgical, Multi-Visit)
- Doctor Payments
- Reward Points
- Patient Feedback
- Growth Charts
- Vaccination
- Medical Records Tracking - Case File Management
- Nexus a proprietary application for Govt ID Smart Cards (Kuwait, UAE, Bahrain, Qatar, KSA), Printers, Barcode Readers, WACOM Signature Devices etc, Biometrics for Patient Verification (Digital Persona 4500 series).)
- Financial Accounting APIs (SAP, Oracle, Microsoft, Tally, etc.)
- CRM
- External Appointment Booking
- External Mobile App (For Appointments and Patient Medical Records)
- Patient / Bills APIs
- Single Sign On with Microsoft LDAP
- HRMS
- SCM (CSV Based or Staging Table Based) (Oracle / SAP)
- HL7 based Lab Equipment Integration
- HL7 based Services Equipment Integration (Welch Allyn)
- HL7 based PACS Integration
- External Application Patient MR No Sync
- Avaya
- SLIDA X-Ray
- 2 Way SMS Web API
Is your clinic / hospital geared up for Malaffi Integration?
Malaffi is an innovative, unified health information exchange platform for health care providers in Abu Dhabi region that facilitates a more patient centric approach to health care provision. Malaffi enables healthcare facilities, health care professionals and government authorities across the emirates of Abu Dhabi to access and share patient’s medical information in order to deliver better healthcare quality and enhance patient safety and overall health outcomes.
Through the provider portal of Malaffi the health care professionals will have access to patient’s full medical history such as
Medication List
Diagnosis list
Allergies list
Procedures List
Clinical encounter history and notes
Laboratory and Radiology results
Is the patient data safe and secure?
Malaffi follows high information security standards. The clinical data access will be given based on the user’s role within the health care organization and oversight of appropriate use of Malaffi is a shared responsibility between DOH, Health care facilities and Malaffi.
How to proceed with Malaffi Integration?
To complete the Malaffi integration as a health care provider you need to communicate with Malaffi team and sign up as a participant. The health care provider needs to communicate with their software provider and enable them to complete the integration with Malaffi.
How Insta HMS by Practo supports Malaffi Integration?
Practo as an ISO 27001 certified organization on security has taken cautious measures on Patient data safety and already started developments towards Malaffi integration. With close to 100 health care facilities using Insta HMS® across emirates of Abu Dhabi we are working directly with Malaffi team towards the integration. We will be achieving SSO integration too with Malaffi so that the health care professionals can access the patient information from the health exchange inside Insta HMS without moving out of EMR window. Practo is very much proud to be part of this great initiative by DOH.
Migration to Insta HMS
We are welcoming the health care providers in Abu Dhabi region to migrate to Insta HMS® to have a seamless integration experience with Malaffi. Migrating to Insta HMS® will provide various benefits to the health care providers on the following and not limited to Increase in Revenue, Enhanced Patient experience, Hassle free Insurance Claim management, Specialty EMR documentation etc.
Please click here to enroll yourself for the change or write to malaffi@practo.com


In this section, specify whether and how to put a file created in IntelliJ IDEA under version control:
- Show options before adding to version control:
newly created files are put under version control after you specify the options in the dialog that opens.
- Add silently:
newly created files are automatically added to version control without any notification.
- Do not add:
newly created files remain unversioned and you can put them under version control later.


Body Of Evidence: Old Mutual Threatened With Legal Action Over Funeral Claim
by NG EditorJOHANNESBURG – The National Funeral Practitioners Association of South Africa has threatened to take legal action against an insurance company for allegedly refusing to pay out a funeral claim to a family until a relative showed up with a body as evidence.
In a video clip, which has gone viral, two women appear to be carrying the corpse inside a bag to show to an official at an Old Mutual office in KwaZulu-Natal.
Old Mutual has since responded to the allegations, saying they have paid out the claim to the bereaved family.
The company said the situation was regrettable and they would continue engaging the family.
However, the National Funeral Practitioners Association of South Africa’s Muzi Hlengwa claimed they were going to support the family until they had justice.
“When the body was taken from the mortuary to Old Mutual, it was all out of anger. So, all the rituals that were conducted to move the body from one place to another were not done. The soul of that man is still left at Old Mutual, so they will have to cover the costs of performing these rituals.”


A car is one of the biggest consumer purchases which a person makes. Since time and age, buying a car has always been a time consuming process with an extra load of exhaustion that comes from all the hopping from one showroom to another hoping to find the perfect Car and the perfect deal.
ShopMyCar has been established with the sole purpose of making this car purchasing process seamless and sweat-free through which one can simply sit down comfortably and hop from one dealer to another to find the perfect Car and deal while just sitting in the living room. It comes with a single window experience from finding the most suitable car to choosing the right dealer, booking a test drive to finalizing the best deal available.
All of this has been made possible with the use of innovative technology to provide a customer friendly platform which is just a click away.


Last summer, Tina and her family went on
holiday to Vancouver, Canada.
city was situated by
seashore.
weather was very pleasant when they were there. On the first day, Tina and her family went on
bike ride around Stanley Park and spent
evening by the Waterfront. Vancouver had
aquarium with over 50,000 aquatic creatures to
see. Tina also went up in
lift on
tower called Vancouver Lookout. From this tower, Tina could see
whole city. Tina had
amazing holiday!


River Street Savannah is the Re-design of River Street Website. River Street is a historic street of Savannah
which has a lot of historic and artistic importance. The street is alongside with the port of Savannah.
People from all over the world enjoy their time in Savannah by visiting River-street and its attractions.
Participation: Project Manager, Research, Visual Designs, Web Development
To get better understanding of the user's need and the visitor's preference we conducted on-site interviews. We talked to shop owners and visitors including couples and families.
From these interviews and proto personas we created themes, insights and ideas going through the ideation funnel to move forward with the implementation phase of the design.
After the preliminary research we designed the focused and simplified navigation for users. On the basis of our research, we paid special attention while mapping events and attractions page.


Miscellaneous utilities header. More...
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
Go to the source code of this file.
Classes | |
| struct | Random |
| struct | Log |
| LogFile. More... |
Macros | |
| #define | MAX(a, b) ((a) > (b) ? (a) : (b)) |
| #define | MIN(a, b) ((a) < (b) ? (a) : (b)) |
| #define | BOUND(var, min, max, name) |
| #define | fatal_error(...) |
| Display an error message as "FATAL_ERROR : file name : function name : line number : ..." and abort the program. | |
| #define | error(...) |
| Display an error message as "ERROR : filename : funcname : line number : ...". | |
| #define | warn(...) |
| Display a warning message as "WARNING : ... ". | |
| #define | info(...) |
| Display a message. | |
| #define | cassio_debug(...) |
| Display a message in cassio's "fenetre de rapport" . | |
| #define | trace(...) |
| trace indicate if a piece of code is visited | |
| #define | debug(...) |
| Display a debuging message as "DEBUG : ... ". | |
| #define | log_open(l, file) |
| open a log file if allowed. | |
| #define | log_close(l) |
| Close an opened log file. | |
| #define | log_print(l,...) |
| Print into the log file. | |
| #define | log_is_open(l) ((l)->f != NULL) |
| Check if the log stream can be used. | |
| #define | log_receive(l, title,...) |
| log a reception | |
| #define | log_send(l, title,...) |
| log a sending |
Typedefs | |
| typedef struct Random | Random |
| typedef struct Log | Log |
| LogFile. |
Functions | |
| long long | real_clock (void) |
| long long | cpu_clock (void) |
| void | time_print (long long, bool, FILE *) |
| Print time as "D:HH:MM:SS.CC". | |
| long long | time_read (FILE *) |
| read time as "D:HH:MM:SS.C". | |
| void | time_stamp (FILE *) |
| Print local time. | |
| void | relax (int) |
| sleep for t ms. | |
| char * | format_scientific (double, const char *, char *) |
| Format a value with a unit. | |
| void | print_scientific (double, const char *, FILE *) |
| Print a value with a unit. | |
| char * | string_duplicate (const char *) |
| Duplicate a string. | |
| long long | string_to_time (const char *) |
| Read time as "D:HH:MM:SS.C". | |
| char * | string_read_line (FILE *) |
| Read a line. | |
| char * | string_copy_line (FILE *) |
| void | string_to_lowercase (char *) |
| Change all char of a string to lowercase. | |
| void | string_to_uppercase (char *) |
| Change all char of a string to uppercase. | |
| int | string_to_coordinate (const char *) |
| Convert the two first chars of a string into a coordinate. | |
| char * | string_to_word (char *) |
| remove spaces from a string. | |
| bool | string_to_boolean (const char *) |
| Convert a string into a boolean. | |
| int | string_to_int (const char *, const int) |
| Convert a string into an integer. | |
| double | string_to_real (const char *, const double) |
| Convert a string into a real number. | |
| char * | parse_word (const char *, char *, unsigned int) |
| Parse a word. | |
| char * | parse_field (const char *, char *, unsigned int, char) |
| Parse a field. | |
| char * | parse_line (const char *, char *, unsigned int) |
| Parse a line. | |
| char * | parse_board (const char *, struct Board *, int *) |
| Parse a board. | |
| char * | parse_move (const char *, const struct Board *, struct Move *) |
| char * | parse_game (const char *, const struct Board *, struct Line *) |
| char * | parse_boolean (const char *, bool *) |
| Parse a boolean. | |
| char * | parse_int (const char *, int *) |
| Parse an integer. | |
| char * | parse_real (const char *, double *) |
| Parse a real number (as a double floating point). | |
| char * | parse_command (const char *, char *, char *, const unsigned int) |
| Parse a command. | |
| char * | parse_find (const char *, const int) |
| Find a char. | |
| char * | parse_skip_spaces (const char *) |
| Skip spaces. | |
| char * | parse_skip_word (const char *) |
| Skip word. | |
| void | path_get_dir (const char *, char *) |
| Extract the directory of a file path. | |
| char * | file_add_ext (const char *, const char *, char *) |
| Add an extension to a string. | |
| bool | is_stdin_keyboard (void) |
| unsigned long long | random_get (Random *) |
| Pseudo-random number generator. | |
| void | random_seed (Random *, const unsigned long long) |
| Pseudo-random number seed. | |
| void | thread_create (Thread *, void *(*f)(void *), void *) |
| Create a thread. | |
| void | thread_join (Thread) |
| Join a thread. | |
| void | thread_set_cpu (Thread, int) |
| Choose a single core or cpu to run on, under linux systems, to avoid context changes. | |
| Thread | thread_self (void) |
| Current thread. | |
| static void | atomic_add (volatile unsigned long long *value, long long i) |
| void | cpu (void) |
| int | get_cpu_number (void) |
| Get the number of cpus or cores on the machine. |
Variables | |
| long long(* | time_clock )(void) |
| Time clock. |
Miscellaneous utilities header.
| #define BOUND | ( | var, | |
| min, | |||
| max, | |||
| name | |||
| ) |
Constrain a variable to a range of values.
| #define cassio_debug | ( | ... | ) |
Display a message in cassio's "fenetre de rapport" .
| #define debug | ( | ... | ) |
Display a debuging message as "DEBUG : ... ".
| #define error | ( | ... | ) |
Display an error message as "ERROR : filename : funcname : line number : ...".
| #define fatal_error | ( | ... | ) |
Display an error message as "FATAL_ERROR : file name : function name : line number : ..." and abort the program.
| #define info | ( | ... | ) |
| #define log_close | ( | l | ) |
Close an opened log file.
| #define log_is_open | ( | l | ) | ((l)->f != NULL) |
Check if the log stream can be used.
| #define log_open | ( | l, | |
| file | |||
| ) |
open a log file if allowed.
| #define log_print | ( | l, | |
| ... | |||
| ) |
Print into the log file.
| #define log_receive | ( | l, | |
| title, | |||
| ... | |||
| ) |
log a reception
| #define log_send | ( | l, | |
| title, | |||
| ... | |||
| ) |
log a sending
| #define MAX | ( | a, | |
| b | |||
| ) | ((a) > (b) ? (a) : (b)) |
Maximum of two values
| #define MIN | ( | a, | |
| b | |||
| ) | ((a) < (b) ? (a) : (b)) |
Minimum of two values
| #define trace | ( | ... | ) |
trace indicate if a piece of code is visited
| #define warn | ( | ... | ) |
Display a warning message as "WARNING : ... ".
|
inlinestatic |
atomic addition
| void cpu | ( | void | ) |
| long long cpu_clock | ( | void | ) |
| char* file_add_ext | ( | const char * | base, |
| const char * | ext, | ||
| char * | file | ||
| ) |
Add an extension to a string.
| base | Base name. |
| ext | Extension (.dat, .ext, .bin, etc.) |
| file | Output file name. |
| char* format_scientific | ( | double | v, |
| const char * | unit, | ||
| char * | f | ||
| ) |
Format a value with a unit.
| v | Value to print. |
| unit | Unit. |
| f | Output string. |
| int get_cpu_number | ( | void | ) |
Get the number of cpus or cores on the machine.
| bool is_stdin_keyboard | ( | void | ) |
| char* parse_board | ( | const char * | string, |
| Board * | board, | ||
| int * | player | ||
| ) |
Parse a board.
| string | String to parse |
| board | Board. |
| player | Player to move color. |
| char* parse_boolean | ( | const char * | string, |
| bool * | result | ||
| ) |
Parse a boolean.
| string | String to parse |
| result | Boolean output value. |
| char* parse_command | ( | const char * | string, |
| char * | cmd, | ||
| char * | param, | ||
| const unsigned int | size | ||
| ) |
Parse a command.
| string | String to parse. |
| cmd | Output command string (first word of the input string). |
| param | Output parameters (remaining of the line). |
| size | cmd string capacity. |
| char* parse_field | ( | const char * | string, |
| char * | word, | ||
| unsigned int | n, | ||
| char | separator | ||
| ) |
Parse a field.
| string | String to parse |
| word | String receiving a copy of the parsed word. |
| n | word string capacity. |
| separator | field separator. NOTE: It is assumed that w is big enough to contains the word copy. |
| char* parse_find | ( | const char * | string, |
| const int | c | ||
| ) |
Find a char.
| string | String to parse. |
| c | Seeked char. |
| char* parse_int | ( | const char * | string, |
| int * | result | ||
| ) |
Parse an integer.
| string | String to parse |
| result | Integer output value. |
| char* parse_line | ( | const char * | string, |
| char * | line, | ||
| unsigned int | n | ||
| ) |
Parse a line.
| string | string to parse |
| line | string receiving a copy of the parsed line. |
| n | line string capacity. NOTE: It is assumed that line is big enough to contains 'n' characters. if the line to be parsed contains more than 'n' characters, only 'n' caracters will be copied, but the whole line will be parsed. |
| char* parse_real | ( | const char * | string, |
| double * | result | ||
| ) |
Parse a real number (as a double floating point).
| string | String to parse. |
| result | Real number (double) output value. |
| char* parse_skip_spaces | ( | const char * | string | ) |
Skip spaces.
| string | String to parse. |
| char* parse_skip_word | ( | const char * | string | ) |
Skip word.
| string | String to parse. |
| char* parse_word | ( | const char * | string, |
| char * | word, | ||
| unsigned int | n | ||
| ) |
Parse a word.
| string | String to parse |
| word | String receiving a copy of the parsed word. |
| n | word string capacity. NOTE: It is assumed that w is big enough to contains the word copy. |
| void path_get_dir | ( | const char * | path, |
| char * | dir | ||
| ) |
Extract the directory of a file path.
| path | Full path. |
| dir | directory part of the path. |
| void print_scientific | ( | double | v, |
| const char * | unit, | ||
| FILE * | f | ||
| ) |
Print a value with a unit.
| v | Value to print. |
| unit | Unit. |
| f | Output stream. |
| unsigned long long random_get | ( | Random * | random | ) |
Pseudo-random number generator.
A good pseudo-random generator (derived from rand48 or Java's one) to set the hash codes.
| random | Pseudo-Random generator state. |
| void random_seed | ( | Random * | random, |
| const unsigned long long | seed | ||
| ) |
Pseudo-random number seed.
| random | Pseudo-Random generator state. |
| seed | a 64-bits integer used as seed. |
| long long real_clock | ( | void | ) |
| void relax | ( | int | t | ) |
sleep for t ms.
| t | time in ms. |
| char* string_copy_line | ( | FILE * | ) |
| char* string_duplicate | ( | const char * | s | ) |
Duplicate a string.
| s | string to duplicate. |
| char* string_read_line | ( | FILE * | f | ) |
Read a line.
Read a line from an input string. The needed memory is allocated.
| f | Input stream. |
| bool string_to_boolean | ( | const char * | s | ) |
Convert a string into a boolean.
Parse a string into a boolean (false/true).
| s | String. |
| int string_to_coordinate | ( | const char * | s | ) |
Convert the two first chars of a string into a coordinate.
| s | String. |
| int string_to_int | ( | const char * | s, |
| const int | default_value | ||
| ) |
Convert a string into an integer.
Parse a string into an int.
| s | String. |
| default_value | default value if parsing failed. |
| void string_to_lowercase | ( | char * | s | ) |
Change all char of a string to lowercase.
| s | string. |
| double string_to_real | ( | const char * | s, |
| const double | default_value | ||
| ) |
Convert a string into a real number.
Parse a string into a double.
| s | String. |
| default_value | default value if parsing failed. |
| long long string_to_time | ( | const char * | string | ) |
Read time as "D:HH:MM:SS.C".
| string | Time as a string. |
| void string_to_uppercase | ( | char * | s | ) |
Change all char of a string to uppercase.
| s | Input string. |
| char* string_to_word | ( | char * | s | ) |
remove spaces from a string.
| s | string. |
| void thread_create | ( | Thread * | thread, |
| void *(*)(void *) | function, | ||
| void * | data | ||
| ) |
Create a thread.
| thread | Thread. |
| function | Function to run in parallel. |
| data | Data for the function. |
| void thread_join | ( | Thread | thread | ) |
Join a thread.
Wait for the thread termination. this function also frees the resources allocated by a thread that has not been detached.
| thread | Thread. |
| Thread thread_self | ( | void | ) |
Current thread.
| void thread_set_cpu | ( | Thread | , |
| int | |||
| ) |
Choose a single core or cpu to run on, under linux systems, to avoid context changes.
| void time_print | ( | long long | t, |
| bool | justified, | ||
| FILE * | f | ||
| ) |
Print time as "D:HH:MM:SS.CC".
| t | Time in milliseconds. |
| justified | add spaces or not before the text. |
| f | Stream. |
| long long time_read | ( | FILE * | f | ) |
read time as "D:HH:MM:SS.C".
| f | Input stream. |
| void time_stamp | ( | FILE * | f | ) |
Print local time.
| f | Output stream. |
| long long(* time_clock)(void) |
Time clock.
Can be set as a real_clock or a cpu_clock.


30 March 2010 - As of 27 March 2010, the Ministry of Health South Africa has reported 63 human cases infected with Rift Valley Fever (RVF), including two deaths in Free State, Eastern Cape and Northern Cape provinces. Most of these cases reported direct contact with RVFV-infected livestock and or linked to farms with confirmed animal cases of RVF. The human cases are: farmers, veterinarians and farm workers. All cases were confirmed with RVF by test conducted at the National Institute of Communicable Diseases (NICD) in Johannesburg, South Africa. (see link below)
There is an ongoing outbreak of Rift Valley Fever Virus (RVFV) infection affecting sheep, goats, cattle and wildlife on farms within Free State, Eastern Cape, Northern Cape, Western Cape, Mpumalanga, North West, Gauteng provinces. As of 29 March 2010, approximately 78 farms reported laboratory-confirmed animal cases, with extensive livestock deaths. (see link below)
Outbreak investigations by the Department of Health and the Department of Agriculture, Forestry and Fisheries are ongoing, and are being supported by the South African Field Epidemiology and Training Programme (SA-FELTP) and NICD. The Department of Health and the Department of Agriculture are taking measures to enhance disease surveillance among cattle and in managing the control of the disease outbreak.
Sporadic cases of RVF infection in animals have been documented in South Africa in recent years. The last major outbreak of the disease in humans occurred between 1974-76, where an estimated 10,000 to 20,000 cases were affected.


Hello ~ My name is Hieu Nguyen, a business analyst who has pivoted her career to web development because I like puzzles. I started teaching myself web development back in August 2016. With my financial analyst experience, I hope to provide a different perspective to web development.
I like to attend Hackathons, travel, and eat. I have been to London, Paris, Belgium, Versailles, Pica, Florence, Venice, Hong Kong, South Korea, Cambodia, Vietnam, Beijing, Shanghai, Kyoto, Tokyo, Nagasaki, Hiroshima and more to come!!
I am proficient in HTML, CSS, and Bootstrap. I have working knowledge of JavaScript, Node, RESTful API, AJAX, Webpack, Go, Python, jQuery, Jasmine, and I am also familiar with Redux and MVC design patterns. See Skills for more.
I am looking for a web development position that would further my software development career.
Please contact me for any web dev opportunities hieu.webdev@gmail.com


{% extends 'layout.html' %} {% block title %} Welcome to LearnNet {% endblock %} {% block main %}
LearnNet is a platform to distribute educational resources, tools, and documents. Access material from universities and schools all around the world.
Learn more


Cake\Controller\
Controller
¶Controllers are the ‘C’ in MVC. After routing has been applied and the correct controller has been found, your controller’s action is called. Your controller should handle interpreting the request data, making sure the correct models are called, and the right response or view is rendered. Controllers can be thought of as middle layer between the Model and View. You want to keep your controllers thin, and your models fat. This will help you reuse your code and makes your code easier to test.
Commonly, a controller is used to manage the logic around a single model. For example, if you were building a site for an online bakery, you might have a RecipesController managing your recipes and an IngredientsController managing your ingredients. However, it’s also possible to have controllers work with more than one model. In CakePHP, a controller is named after the primary model it handles.
Your application’s controllers extend the AppController
class, which in turn
extends the core Controller
class. The AppController
class can be defined in src/Controller/AppController.php and it should
contain methods that are shared between all of your application’s controllers.
Controllers provide a number of methods that handle requests. These are called actions. By default, each public method in a controller is an action, and is accessible from a URL. An action is responsible for interpreting the request and creating the response. Usually responses are in the form of a rendered view, but there are other ways to create responses as well.
As stated in the introduction, the AppController
class is the parent class
to all of your application’s controllers. AppController
itself extends the
Cake\Controller\Controller
class included in CakePHP.
AppController
is defined in src/Controller/AppController.php as
follows:
namespace App\Controller;
use Cake\Controller\Controller;
class AppController extends Controller
{
}
Controller attributes and methods created in your AppController
will be
available in all controllers that extend it. Components (which you’ll
learn about later) are best used for code that is used in many (but not
necessarily all) controllers.
You can use your AppController
to load components that will be used in every
controller in your application. CakePHP provides a initialize()
method that
is invoked at the end of a Controller’s constructor for this kind of use:
namespace App\Controller;
use Cake\Controller\Controller;
class AppController extends Controller
{
public function initialize()
{
// Always enable the CSRF component.
$this->loadComponent('Csrf');
}
}
In addition to the initialize()
method, the older $components
property
will also allow you to declare which components should be loaded. While normal
object-oriented inheritance rules apply, the components and helpers used by
a controller are treated specially. In these cases, AppController
property
values are merged with child controller class arrays. The values in the child
class will always override those in AppController
.
When a request is made to a CakePHP application, CakePHP’s
Cake\Routing\Router
and Cake\Routing\Dispatcher
classes use Connecting Routes to find and create the correct
controller instance. The request data is encapsulated in a request object.
CakePHP puts all of the important request information into the $this->request
property. See the section on Request for more information on the
CakePHP request object.
Controller actions are responsible for converting the request parameters into a response for the browser/user making the request. CakePHP uses conventions to automate this process and remove some boilerplate code you would otherwise need to write.
By convention, CakePHP renders a view with an inflected version of the action
name. Returning to our online bakery example, our RecipesController might contain the
view()
, share()
, and search()
actions. The controller would be found
in src/Controller/RecipesController.php and contain:
// src/Controller/RecipesController.php
class RecipesController extends AppController
{
public function view($id)
{
// Action logic goes here.
}
public function share($customerId, $recipeId)
{
// Action logic goes here.
}
public function search($query)
{
// Action logic goes here.
}
}
The template files for these actions would be src/Template/Recipes/view.ctp, src/Template/Recipes/share.ctp, and src/Template/Recipes/search.ctp. The conventional view file name is the lowercased and underscored version of the action name.
Controller actions generally use
Controller::set()
to create a context that
View
uses to render the view layer. Because of the conventions that
CakePHP uses, you don’t need to create and render the view manually. Instead,
once a controller action has completed, CakePHP will handle rendering and
delivering the View.
If for some reason you’d like to skip the default behavior, you can return a
Cake\Http\Response
object from the action with the fully
created response.
In order for you to use a controller effectively in your own application, we’ll cover some of the core attributes and methods provided by CakePHP’s controllers.
Controllers interact with views in a number of ways. First, they
are able to pass data to the views, using Controller::set()
. You can also
decide which view class to use, and which view file should be
rendered from the controller.
Cake\Controller\Controller::
set
(string $var, mixed $value)¶The Controller::set()
method is the main way to send data from your
controller to your view. Once you’ve used Controller::set()
, the variable
can be accessed in your view:
// First you pass data from the controller:
$this->set('color', 'pink');
// Then, in the view, you can utilize the data:
?>
You have selected <?= h($color) ?> icing for the cake.
The Controller::set()
method also takes an
associative array as its first parameter. This can often be a quick way to
assign a set of information to the view:
$data = [
'color' => 'pink',
'type' => 'sugar',
'base_price' => 23.95
];
// Make $color, $type, and $base_price
// available to the view:
$this->set($data);
If you want to customize the view class, layout/template paths, helpers or the
theme that will be used when rendering the view, you can use the
viewBuilder()
method to get a builder. This builder can be used to define
properties of the view before it is created:
$this->viewBuilder()
->helpers(['MyCustom'])
->theme('Modern')
->className('Modern.Admin');
The above shows how you can load custom helpers, set the theme and use a custom view class.
New in version 3.1: ViewBuilder was added in 3.1
Cake\Controller\Controller::
render
(string $view, string $layout)¶The Controller::render()
method is automatically called at the end of each requested
controller action. This method performs all the view logic (using the data
you’ve submitted using the Controller::set()
method), places the view inside its
View::$layout
, and serves it back to the end user.
The default view file used by render is determined by convention.
If the search()
action of the RecipesController is requested,
the view file in src/Template/Recipes/search.ctp will be rendered:
namespace App\Controller;
class RecipesController extends AppController
{
// ...
public function search()
{
// Render the view in src/Template/Recipes/search.ctp
$this->render();
}
// ...
}
Although CakePHP will automatically call it after every action’s logic
(unless you’ve set $this->autoRender
to false
), you can use it to specify
an alternate view file by specifying a view file name as first argument of
Controller::render()
method.
If $view
starts with ‘/’, it is assumed to be a view or
element file relative to the src/Template folder. This allows
direct rendering of elements, very useful in AJAX calls:
// Render the element in src/Template/Element/ajaxreturn.ctp
$this->render('/Element/ajaxreturn');
The second parameter $layout
of Controller::render()
allows you to specify the layout
with which the view is rendered.
In your controller, you may want to render a different view than the
conventional one. You can do this by calling Controller::render()
directly. Once you
have called Controller::render()
, CakePHP will not try to re-render the view:
namespace App\Controller;
class PostsController extends AppController
{
public function my_action()
{
$this->render('custom_file');
}
}
This would render src/Template/Posts/custom_file.ctp instead of src/Template/Posts/my_action.ctp.
You can also render views inside plugins using the following syntax:
$this->render('PluginName.PluginController/custom_file')
.
For example:
namespace App\Controller;
class PostsController extends AppController
{
public function my_action()
{
$this->render('Users.UserDetails/custom_file');
}
}
This would render plugins/Users/src/Template/UserDetails/custom_file.ctp
Cake\Controller\Controller::
redirect
(string|array $url, integer $status)¶The flow control method you’ll use most often is Controller::redirect()
.
This method takes its first parameter in the form of a
CakePHP-relative URL. When a user has successfully placed an order,
you might wish to redirect him to a receipt screen.
public function place_order()
{
// Logic for finalizing order goes here
if ($success) {
return $this->redirect(
['controller' => 'Orders', 'action' => 'thanks']
);
}
return $this->redirect(
['controller' => 'Orders', 'action' => 'confirm']
);
}
The method will return the response instance with appropriate headers set. You should return the response instance from your action to prevent view rendering and let the dispatcher handle actual redirection.
You can also use a relative or absolute URL as the $url argument:
return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
You can also pass data to the action:
return $this->redirect(['action' => 'edit', $id]);
The second parameter of Controller::redirect()
allows you to define an HTTP
status code to accompany the redirect. You may want to use 301
(moved permanently) or 303 (see other), depending on the nature of
the redirect.
If you need to redirect to the referer page you can use:
return $this->redirect($this->referer());
An example using query strings and hash would look like:
return $this->redirect([
'controller' => 'Orders',
'action' => 'confirm',
'?' => [
'product' => 'pizza',
'quantity' => 5
],
'#' => 'top'
]);
The generated URL would be:
http://www.example.com/orders/confirm?product=pizza&quantity=5#top
Cake\Controller\Controller::
setAction
($action, $args...)¶If you need to forward the current action to a different action on the same
controller, you can use Controller::setAction()
to update the request object, modify the
view template that will be rendered and forward execution to the named action:
// From a delete action, you can render the updated
// list page.
$this->setAction('index');
Cake\Controller\Controller::
loadModel
(string $modelClass, string $type)¶The loadModel()
function comes handy when you need to use a model
table/collection that is not the controller’s default one:
// In a controller method.
$this->loadModel('Articles');
$recentArticles = $this->Articles->find('all', [
'limit' => 5,
'order' => 'Articles.created DESC'
]);
If you are using a table provider other than the built-in ORM you can link that table system into CakePHP’s controllers by connecting its factory method:
// In a controller method.
$this->modelFactory(
'ElasticIndex',
['ElasticIndexes', 'factory']
);
After registering a table factory, you can use loadModel
to load
instances:
// In a controller method.
$this->loadModel('Locations', 'ElasticIndex');
Note
The built-in ORM’s TableRegistry is connected by default as the ‘Table’ provider.
Cake\Controller\Controller::
paginate
()¶This method is used for paginating results fetched by your models.
You can specify page sizes, model find conditions and more. See the
pagination section for more details on
how to use paginate()
The paginate attribute gives you an easy way to customize how paginate()
behaves:
class ArticlesController extends AppController
{
public $paginate = [
'Articles' => [
'conditions' => ['published' => 1]
]
];
}
Cake\Controller\Controller::
loadComponent
($name, $config = [])¶In your Controller’s initialize()
method you can define any components you
want loaded, and any configuration data for them:
public function initialize()
{
parent::initialize();
$this->loadComponent('Csrf');
$this->loadComponent('Comments', Configure::read('Comments'));
}
Cake\Controller\Controller::$
components
¶The $components
property on your controllers allows you to configure
components. Configured components and their dependencies will be created by
CakePHP for you. Read the Configuring Components section for more
information. As mentioned earlier the $components
property will be merged
with the property defined in each of you controller’s parent classes.
Cake\Controller\Controller::$
helpers
¶Let’s look at how to tell a CakePHP Controller that you plan to use additional MVC classes:
class RecipesController extends AppController
{
public $helpers = ['Form'];
}
Each of these variables are merged with their inherited values,
therefore it is not necessary (for example) to redeclare the
FormHelper
, or anything that is declared in your AppController
.
Deprecated since version 3.0: Loading Helpers from the controller is provided for backwards compatibility reasons. You should see Configuring Helpers for how to load helpers.
CakePHP controllers trigger several events/callbacks that you can use to insert logic around the request life-cycle:
Controller.initialize
Controller.startup
Controller.beforeRedirect
Controller.beforeRender
Controller.shutdown
By default the following callback methods are connected to related events if the methods are implemented by your controllers
Cake\Controller\Controller::
beforeFilter
(Event $event)¶Called during the Controller.initialize
event which occurs before every
action in the controller. It’s a handy place to check for an active session
or inspect user permissions.
Note
The beforeFilter() method will be called for missing actions.
Returning a response from a beforeFilter
method will not prevent other
listeners of the same event from being called. You must explicitly
stop the event.
Cake\Controller\Controller::
beforeRender
(Event $event)¶Called during the Controller.beforeRender
event which occurs after
controller action logic, but before the view is rendered. This callback is
not used often, but may be needed if you are calling
Controller\Controller::render()
manually before the end
of a given action.
Cake\Controller\Controller::
afterFilter
(Event $event)¶Called during the Controller.shutdown
event which is triggered after
every controller action, and after rendering is complete. This is the last
controller method to run.
In addition to controller life-cycle callbacks, Components also provide a similar set of callbacks.
Remember to call AppController
‘s callbacks within child controller callbacks
for best results:
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
}


Welcome to best dating website to ever hit the internet! Our user's are matched by location and interests, and have the highest rate of successful dates of any online dating site. Join today and find your next big date!
"Some of the best dates I have ever been on."
"I never thought I would have any reasonable success using a service. I didn't realize how wrong I was! This site is the best!"
"You wont regret trying out My Dating Site!"


--- layout: post title: The 6th Worst Winter Since 1936 date: '2014-02-13T13:27:00-05:00' tags: - snowfall - data category: blog tumblr_url: http://talziv.me/post/76544591846/the-6th-worst-winter-since-1936 ---
This winter has been tough. It feels much worse than normal but my gauge is off after living in Hawaii for nine years. So what does the data show? I downloaded a few climatological data sets from the National Climatic Data Center. NCDC, part of NOAA, has some fantastic resources and with a bit of excel and Tableau trickery I had all the snowfall totals since 1936 for Newark Airport in New Jersey (a good proxy for the NYC area but less so for Long Island).
The Air Force’s 14th Weather Squadron has better climatological databases, but I couldn’t publish them here and these are good enough. I also downloaded all the snow fall totals from Wunderground’s daily history and discovered that even though their site shows data, they don’t have any for anything before 2006 (see here).
 In the last 78 years only five years had more snowfall up to 7 Feb 2014. With the today’s snowstorm we’re likely to pop into fourth place, out seating the great winter of 1948. I still remember the 1996 season (3rd worst since 1948) and the week we had off from high school.
Precariously projecting future snowfall based on past snowfall (which has a terrible correlation but is fun to think about) predicts that 2014 will have over 4.5 feet of snow (55”).
With 42” booked to date, we can pretend to expect another 13” to close out the season. Let’s hope they all fall today.


mon·ster / n. 1. Frightening imaginary creature. 2. Cruel or wicked person. 3.  [L monstrum fr. monere warn]
Ever since Final Fantasy I, there have been recurring monsters appearing in the series. Just seeing these familiar faces reminds you that you're part of a great series. Everything from bats, wolves, and cats to dragons, doors, and cacti have been an enemy in Final Fantasy. This page features the most unique, imaginative, and legendary creatures of Squaresoft's mind. Each entry includes all known palette swaps of that character with English and Japanese translations. (NOTE: spelling differences, such as Sahagin (NA) and Sahuagin (JP) were not noted, just different names).
This page also includes the ultimate bosses of the Final Fantasy games. Legendary villains like Sephiroth and Kefka (and not so legendary like Necron) are listed here, as well as optional bosses, like Ultima Weapon.
Bosses And Optional Bosses
In almost every game, there is at least one enemy, optionally fought (not randomly encountered), as strong as the final boss, if not stronger. This adds to the replay value of the game and a challenge to the player. FF10 actually has a whole arena where optional bosses can be fought.
Expand All Images | Collapse All Images
Final Fantasy 1
Chaos - Final Boss
This yellow-skinned demon is the final boss of FF1, formed when Garland merges with the power of the Four Fiends. He is the only boss monster not to merit his own music (but he did have a nifty disintegration sequence - well, nifty for NES). NOTE: Chaos is also the final limit break for Vincent (FF7).
Expand Images
War Mech - Randomly Encountered
AKA Death Machine (JP). This giant robot guards the bridge to Tiamat's lair. The chance of encountering it is only 5%, but if met, its repeated nuclear attacks will bring the heroes to its mercy.
Expand Images
Omega - Optional (Dawn of Souls)
Chronodia - Optional (PSP)
A bizzare amalgam of enemies from the game surrounding an orb of light, Chronodia is the last boss at the end of the Labyrinth of Time. Its strength is determined by the number of Blue Seals the player has collected, being stronger the greater this number is, resulting in a total of eight variations of the boss (which come from of the permutations of Red and Blue Seals).
Expand Images
Final Fantasy 2
Emperor Palamecia - Final Boss
This guy just keeps coming back for more, even after he dies! Still, a bit more wimpy than most final bosses. See also
FF2 Characters.
Expand Images
Light Emperor - Final Boss (Dawn of Souls)
The true form of Emperor Palamecia. Her soul is good, but lives in Hell.
 It has only a single attack, which it uses over and over.
Expand Images
Final Fantasy 4
Zeromus - Final Boss
The physical representation of Zemus' rage and hatred looks pretty nasty even when it doesn't do much, but when you reveal its final form, it looks like a cross between a
Metroid and an
Alien. It uses several freaky spells, including Black Hole.
Expand Images
Zeromus EG - Optional (GBA)
The final boss in the optional Lunar Ruins, Zeromus EG is named so for the use of his "easy game" version sprite. Using similiar attacks and patterns as his standard version, EG is also appreciably tougher.
Expand Images
Brachioraidos - Optional (GBA)
A dragon found only in the Lunar Ruins, Brachioraidos is one of the toughest enemies in the game and is found at a random location on the 50th floor.
Expand Images
Final Fantasy 5
Neo Exdeath - Final Boss
Exdeath the "tree" uses a very unsettling "Void" attack which just makes one character disappear!  It uses a variety of status problems, physical attacks, magic attacks, defensive spells, and the almighty Almagest spell. Winner of the Most Psychedelic Background award. See also
FF5 Characters.
Expand Images
Shinryu - Optional
In FF5, the ultimate dragon hides in a normal treasure box, but if the unwary traveler opens it, WHOA! It uses powerful water attacks and absorbs basically anything but physical damage.  Still, can't beat that feeling of accomplishment, eh? In the GBA version, an even stronger Shinryu, Neo Shinryu, can be found in the Sealed Temple, arguably the hardest fight in the whole game! In FF10, Shinryu returns in the Monster Arena, and becomes available after capturing a set of aquatic monsters. He is battled underwater.
Expand Images
Omega - Optional
Final Fantasy 6
Kefka - Final Boss
One of the coolest final battles in the series while still clinging to some inkling of sanity. The four statues that compose the battle contain Lucifer/fallen angel references throughout; each statue has two to four individual targets with their own strengths and weaknesses. Kefka himself has grown angel wings and an ultra-cool music theme. His "Fallen One" spell reduces all HP to 1! See also
FF6 Characters.
Expand Images
Ultima Weapon - Optional
Final Fantasy 7
Sephiroth - Final Boss
Sephiroth is one of the most loved(!) bosses in Final Fantasy, with one of the most famous FF songs - "One-Winged Angel". Despite all that, though, he's also one of the easiest final battles in the series. His first form - Bizarro Sephiroth - is a two-headed, multi-limbed pupaic monstrosity (indeed, bizarre). Your party must split into two or three groups to defeat him, with each group only having access to a selected group of targets. His next form, Safer Sephiroth (probably mistranslated from Seraph Sephiroth), grows one single wing out his back. His signature attack, "Super Nova", lasts about a minute, and destroys the whole solar system to try to knock you out. (!?!?). The final battle is for cinematic purposes only - a one-on-one with Cloud. See also
FF7 Characters.
Expand Images
Ultima Weapon - Optional
Emerald Weapon - Optional
This boss was only fightable in FF7 (NA) and the Japanese FF7 International. It lives underwater after Disc 1, just waiting for a fight. It has four eyes on his shoulders, each of which do some nasty damage.  Using
Knights of the Round and Mimic materia can eventually kill it, after which a man in Kalm will give you a full set of Master Materia! (See also
Ultima Weapon and
Ruby Weapon.
Expand Images
Ruby Weapon - Optional
Like
Emerald Weapon, this special boss was only in FF7 (NA) and the Japanese re-release, FF7 International. It lives under the Corel Desert (once it appears), with only a tiny red arm sticking out, waiting for a curious player to come investigate. It has the ability to eliminate two players from battle, leaving only one, and it cannot be defeated unless its two claws are buried in the sand. If you defeat it, a man in Kalm Town will give you a free Gold Chocobo!
Expand Images
Final Fantasy 8
Griever - Final Boss
Ultimecia summons this GF as part of the final battle. Squall has a ring and a necklace featuring Griever, and Ultimecia calls it the "ultimate GF".
Expand Images
Ultimecia - Final Boss
Ultimecia is the main antagonist of FF8 (see
FF8 Characters) who only appears and speaks at the end. Although she doesn't have much personality, she packs a lot of punch. Any GF's in the process of being summoned can be wiped out, so that strategy won't work here. She can also remove any one spell (no matter the quantity) at once, even if it is junctioned. After her first form is defeated, she then summons the ultimate GF -
Griever. After that is defeated, she then junctions herself to Griever, making a strange merged beast. Her final form is a giant robot sorceress, who has the capability to cast two strong spells - "Hell's Judgement", which will bring the entire party's HP down to one, and "Apocalypse", an ultima-like attack (which can actually be drawn and used by the party).
Expand Images
Ultima Weapon - Optional
Omega Weapon - Optional
Final Fantasy 9
Necron - Final Boss
The final boss of FF9 is more symbolic than relevant to the storyline (See
FF9 Characters. Its signature attack Grand Cross (used also by
FF5's final boss) causes many status ailments and lots of damage. Once you figure out how to defeat it, the fight's over pretty quickly.
Expand Images
Ozma - Optional
A very bizarre optional boss, whose battle takes place at the Chocobo Air Garden. Ozma is by far the hardest boss of FF9 (far eclipsing
Necron). It resembles nothing more than a colorful sphere. It gets to move about three times a round, and consistently cures itself or casts powerful magic (including ones that cause big status problems or kill instantly). What's worse, unless you pursue yet another side quest, you can't use physical attacks against it! When you win you get a useless Strategy Guide and a very useful Pumice and Dark Matter.
Expand Images
Hades - Optional
In FF9, Hades appears as an optional boss with many status attacks and the Doomsday spell. If defeated, he allows you to access to his synthesis shop, and gives Dagger the
Ark summon. For information about Hades as a summon, see
Hades.
Expand Images
Final Fantasy 10
Jecht (Braska's Final Aeon) - Final Boss
As per the nature of the spiral of Sin, the party is forced to take down Braska's Final Aeon - Jecht.   He attacks with a wide sword and two curative pagodas. Like all Aeons, this one has a very nasty Overdrive that hits more often than usual. He can take out many characters in one hit, or use a petrify/physcial attack combo that will eliminate that entire position from the battle (meaning you'll only have two spots to rotate someone in!). Aeons are effective, but he can wipe them out on his next turn. The Magus Sisters can take him down quickly.
Expand Images
Yu Yevon - Final Boss
Seeing the final boss of FF10 is most definitely a "WTF" moment. This fight is more for cinematic purposes than a challenge, since your characters have auto-life cast on them. Yu Yevon is just a floating, black, blobby squid who first possesses your Aeons and forces you to destroy them. After that, he attacks with spells like Gravija, Ultima, and Osmose. He can heal himself each turn for 9,999 HP, and if that wasn't enough, the Yu Pagodas assist with curing as well. (See
FF10 Characters and
FF10 Story for more information)
Expand Images
Ultima Weapon - Optional
Omega Weapon - Optional
Nemesis - Optional
Also known as "Omega Gold". This optional boss is created at the monster arena, after you've captured ten of every single monster in Spira and beaten every other monster in the Monster Arena. He resembles a palette swap of
Ultima Weapon. I personally haven't encountered it yet, but they say he's one mother of a fight!
Expand Images
Penance - Optional
This boss is only seen in FF10 International. Lacking that version, I don't know much else about it, but it's apparently even harder than the Dark Aeons.
Expand Images
Shinryu - Optional
Final Fantasy X-2
Vegnagun - Final Boss
Vegnagun is the ultimate weapon, with the capability to destroy Sin, and incapability to distinguish friend and foe. It appears to be controlled by some sort of organ. Yuna, Rikku, and Paine work their way up from the tail to the legs, arms, torso, and finally the head, before confronting the weapon's
controller.
Expand Images
Shuyin - Final Boss
Shuyin is the final fight of the FFX-2's storyline. See
FFX-2 Characters for more information about his significance. All his attacks are the same as the overdrives of his counterpart, but he goes down quickly.
Expand Images
Ultima Weapon - Optional
Omega Weapon - Optional
Trema - Optional
This old guy is at the very bottom of the Via Infinito. After defeating Paragon, an
Omega Weapon-type creature, you are thrust directly into battle with him. He's amazingly fast and strong (both physically and mentally) for a geezer. Winning nets you the Iron Duke accessory, which makes every other battle, even in New Game+, pathetically easy.
Expand Images
Major Numerus - Optional (International)
A large hydra fought in the coliseum.
Expand Images
Final Fantasy 11
Shadow Lord - Final Boss
The final boss of the main game of Final Fantasy 11 and the Lord of the Beastmen. He began the crystal war by gathering most of the beastmen races and attacking the three nations. Though he was defeated by Zeid, the Shadow Lord was defeated, although Volker took the credit. Later when he was resurrected, he was revealed to be Raogrimm, a lost Galkan who gave his soul for vengeance of his love. He starts in his physical form, which is vulnerable to magic. After his defeat there, he switches to Dynamis Lord, his magical form, which is vulnerable to physical attacks. He has many powerful attacks, such as permanent Chainspell, Invincible, Blood Weapon, and the ability to clone himself for a few seconds.
Expand Images
Promathia - Final Boss
The final boss of the FF11 "Chains of Promathia" expansion pack. He is the twilight god, on par with Altana. He created the ark angels and the beastmen. He cursed people of Vana'diel for attempting to open the gates of paradise. This curse is the emptiness threatening to consume the land. To complete his purpose, he must be resurrected and killed so that every citizen will return to him when he dies.
Expand Images
Eald'Narche - Final Boss
The final boss of the FF11 "Rise of the Zilart" expansion pack. Despite appearances, he is the older of the two Zilart princes. Experiments involving the mother crystal turned him into the form he is today. When Raogrimm reactivated the crystals, the two of them awoke, and they began their plans to open the gates of paradise. He is the real mastermind behind the crystal war, manipulating the
Shadow Lord to bring about his wishes. He has four exoplates that protect him and must be destroyed before you can start attacking the big cheese. He mercilessly casts ancient magic like flood, flare, quake, tornado, etc.
Expand Images
Absolute Virtue - Optional
Absolute Virtue is a Notorius Monster in Final Fantasy XI,and is the hardest enemy in the game.  The accusation became so strong and so frequent that Square-Enix had to release a video with hints on how to defeat Absolute Virtue, but he still remains a difficult adversary to say the very least.
Expand Images
Final Fantasy 12
The Undying - Final Boss
The final version of Vayne fused with Venat is remarkably similar to Bahamut (in fact, the two take pieces of the warship Bahamut to create this final form). It uses Megaflare, Gigaflare, and Teraflare (its eyes light up red during the second and blue during the third, mirroring the colors of Neo Bahamut and Bahamut ZERO in FF7). (We still need a better image of this.)
Expand Images
Yiazmat - Optional
AKA Yazmat (JP). This wyrm is the final mark, and is only available to fight (in the Ridorana Cataract) after beating its little brother, Hell Wyrm, in the Sochen Cave Palace. Both fights have multiple health bars; Yiazmat has over 50 million HP! Both fights also allow you to leave in the middle and heal up; the HP of the boss will remain depleted. Yiazmat can take several hours to beat, after which you gain the last ingredient for the Wyrmhero Blade.
CP: One Deity among Dragons, One great Wyrm to rule all Wyrms of the World, by the Creator Himself created. Legend says it's an Anima, Guardian to a sacred Blade. Though most sacred amongst its Kind, its great Power drove it to Madness, and in the End, it became a threat to it's own Creator. His Master was killed by Yiazmat, robbing Montblanc of all Joy in Life,and he would have Revenge.
In Revenant Wings, Yiazmat is holed up in the tenth and last floor of the Midlight Deep, and beating him will power up Vaan's Anastasia sword.
Expand Images
Final Fantasy 12: Revenant Wings
Feolthanos Exultant - Final Boss
The Last Auralith, Feolthanos consists of three parts (Medi, Dex, and Sinis), being the head, right hand, and left hand, respectively. Each has one massive attack, but worse are the Wing Wraiths he constantly summons. When you finally manage to get his HP down, he'll summon Bahamut to give you grief.
Expand Images
Zodiac (aka Zodiark) - Optional
In FF12, Zodiark, the Keeper of Precepts, is the dark Esper, representing Ophiuchus. (Note: Ophiuchus is not a constellation of the Zodiac; however, it is the only constellation the sun passes through every year that is not one of the Zodiac twelve). Zodiark is one of the toughest monsters to beat in either FF12 or FF12RW, the latter of which has him sitting pretty on the Well of Whispered Oaths. For information on Zodiac the summon in FF12 and FF12RW, see
Zodiac.
Expand Images
Yiazmat - Optional
Final Fantasy: Mystic Quest
Dark King - Final Boss
The first real final boss who comes in several forms. He's a greenish man wearing a royal robe, but once you whittle him down he breaks out the firepower - first growing six arms, each carrying a weapon of destruction, and then turning into a giant spider. The super-secret trick? He's undead. Cure spells do tons of damage.
Expand Images
Final Fantasy Tactics
Elidibus - Optional
He lives in the tenth basement of the Deep Dungeon. He has his own Zodiac Stone and Lucavi alterego, and he employs
Apandas as bodyguards. He uses several weird attacks, like Poison Frog,
Midgar Zolom (mistranslated as Midgarswarm) and the ultimate summon spell,
Zodiac. The hard part in beating him comes into play if you want your summoners to learn Zodiac; you have to make them survive the spell once. If you don't care, he's not that tough at all. When you beat him, you'll get the Serpentarius Zodiac Stone.
Expand Images
Ultima - Final Boss
Due to the nature of Tactics' battle system (five against one? come on!), this battle is practically a joke. He starts off tough with a bunch of Ultima Demons, but then turns into a winged giant (a la
Sephiroth) with super spells like All-Ultima, which really don't pose much of a problem at all. He blows up the airship he's standing on when you're finished with him.
Expand Images
Final Fantasy Tactics Advance
Li Grim - Final Boss
The personification of all the dreams and the dreamers. Kind of a downer to beat her, actually. She can change laws at whim, and deal pretty big damage to multiple units. Other than that, she isn't much of a challenge.
Expand Images
Final Fantasy Tactics A2
Omega Weapon - Optional
Neukhia - Final Boss
Neukhia is... a big demony thing. There's no backstory or explanation about what it is or why you're fighting it, except that it comes out of the void opened by Illua's grimoire.
Expand Images
Final Fantasy, all games and animation bearing the Final Fantasy name, and all characters in said games or animation are copyright their respective creators, including but not limited to Squaresoft, Square Enix, Square EA, Tokyo TV, and ADV Films.