]> jfr.im git - irc/gameservirc.git/commitdiff
Consolidated monster data into a single .dat file
authorkainazzzo <redacted>
Wed, 23 Sep 2009 21:52:57 +0000 (21:52 +0000)
committerkainazzzo <redacted>
Wed, 23 Sep 2009 21:52:57 +0000 (21:52 +0000)
Finished FileMonsterDAO and removed the monster list from LevelGO to adhere to SRP again.

git-svn-id: https://svn.code.sf.net/p/gameservirc/code/trunk@536 bc333340-6410-0410-a689-9d09f3c113fa

30 files changed:
gameserv-2.0/data/monsters.dat [new file with mode: 0644]
gameserv-2.0/data/monsters/level1.dat [deleted file]
gameserv-2.0/data/monsters/level10.dat [deleted file]
gameserv-2.0/data/monsters/level11.dat [deleted file]
gameserv-2.0/data/monsters/level12.dat [deleted file]
gameserv-2.0/data/monsters/level2.dat [deleted file]
gameserv-2.0/data/monsters/level3.dat [deleted file]
gameserv-2.0/data/monsters/level4.dat [deleted file]
gameserv-2.0/data/monsters/level5.dat [deleted file]
gameserv-2.0/data/monsters/level6.dat [deleted file]
gameserv-2.0/data/monsters/level7.dat [deleted file]
gameserv-2.0/data/monsters/level8.dat [deleted file]
gameserv-2.0/data/monsters/level9.dat [deleted file]
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/File/FileDAOFactory.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/File/FileId.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/File/FileMonsterDAO.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/IDAOFactory.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/ILevelDAO.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/IMasterDAO.h
gameserv-2.0/libgameservgldl/include/GameServ/DataLayer/IMonsterDAO.h
gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/LevelGO.h
gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/MonsterGO.h
gameserv-2.0/libgameservgldl/src/DataLayer/File/FileDAOFactory.cpp
gameserv-2.0/libgameservgldl/src/DataLayer/File/FileId.cpp
gameserv-2.0/libgameservgldl/src/DataLayer/File/FileMonsterDAO.cpp
gameserv-2.0/libgameservgldl/src/DataLayer/ILevelDAO.cpp
gameserv-2.0/libgameservgldl/src/DataLayer/IMasterDAO.cpp
gameserv-2.0/libgameservgldl/src/DataLayer/IMonsterDAO.cpp
gameserv-2.0/libgameservgldl/src/GameLayer/GameObjects/LevelGO.cpp
gameserv-2.0/libgameservgldl/src/GameLayer/GameObjects/MonsterGO.cpp

diff --git a/gameserv-2.0/data/monsters.dat b/gameserv-2.0/data/monsters.dat
new file mode 100644 (file)
index 0000000..5e0a452
--- /dev/null
@@ -0,0 +1,200 @@
+1~Slime~Acid Goo~The slime oozes into nothing... you clean the acid goo off of your weapon~\r
+1~Ghost~Cold Breath~You feel a chill as the spirit leaves the realm.~\r
+1~Ugly Rodent~Sharp Teeth~You stomp on the Ugly Rodent's remains for a finishing blow.~\r
+1~Whart Hog~Tusks~You cook and eat the hog for good measure!~\r
+1~Pesky Kid~Slingshot~You take his slingshot and snap the band, sending the kid crying home to mom~\r
+1~Playground Bully~Painful Noogie~You give him an indian burn, and punt him across the schoolyard!~\r
+1~Small Imp~Dagger~You can't help but laugh as he stumbles and falls onto his own dagger!~\r
+1~Little Monkey~Monkey Wrench~You want to cook it, but you just can't think of eating something that looks so human!~\r
+1~Grub Worm~Minor Nudge~You decide to save the poor little fella for your next fishing trip.~\r
+1~Drakee~Tail Slap~You hold the little Drakee by its tale and slam it down on a dry stump!~\r
+1~Fat Slob~Smelly Breath~You kick his stomach for fun, and are thrown back by the spring of it all!~\r
+1~Lost Warrior~Long Sword~You give him a proper burial in respect for the dead warrior.~\r
+1~Harry Potter~Nimbus 2000~I don't go looking for trouble. Trouble usually finds me.~\r
+1~Snake Nidhogg~Crushtail~CURSE YOU!~\r
+1~Seven of Nine~Nanoprobes~Death is irrelevant, resistance is futile~\r
+1~Great Smiley~Happiness~Wheeeeeeeee, party!! :D~\r
+1~Crud Puppy~Bad Office Coffee~My evil powers have grown weak!~\r
+1~Layla~Sexy Kiss of Insanity~She lookes at you with her misleading eyes, almost making you feel bad you killed her.~\r
+1~Ignatz Despoiler-of-Maidens~Bludgeon~Blessed with his own stupidity!~\r
+1~King Kong~Skyscraper~I want my woman!~\r
+1~Sergeant Gunnary Heartman~Drill Voice~You still need training boy!~\r
+1~Cartman~Flammable Fart~Respect my authority!\r
+2~Lost Warrior's Cousin Larry~Wood Axe~He was pretty pissed you killed his cousin, but he seems to have suffered the same fate!~\r
+2~Sandman~Sleeping Dust~You put the sandman to his final sleep.~\r
+2~Skank~Stiletto Heel~Your pimp hand is way strong!~\r
+2~Goblin Gardener~Garden Spade~You trample on his garden after slaying him... that felt good!~\r
+2~Evil Elf~Dark Bow~Elves are usually nice you thought... hmm.~\r
+2~Viking Warrior~Broad Sword~You heard vikings were big, but not THAT big!~\r
+2~Wicked Witch~Cackling Laugh~Just for kicks, you splash some water on her and watch her melt.~\r
+2~Vampire Bat~Blood Sucking Fangs~You fry up the bat and eat it... needs gaaahlic.~\r
+2~Thorn Bush~101 Thorns~You set the bush ablaze and roast some marshmallows.~\r
+2~Barbarian~Heavy Sword~You listen to him moan as he falls over dead.~\r
+2~Crypt Rat~Stinging Bite~You squash the little rodent for fear that it might not be dead.~\r
+2~Small Orc~Sharp Blade~It's an ugly one, and it would've grown up to be a terror...~\r
+2~Virus Bots~Trojan Horses~You run a quick virus scan before you leave this software in the dust.\r
+2~Hex Maniac~Satanic Powers~You'll go to hell!~\r
+2~Eight-legged-freak~Venom~We'll meet again!~\r
+2~Anger Piercer~Pointy sword~You broke my sword!~\r
+2~Bookwarp Cadaver~Rotten smell~Don't let me rott!~\r
+2~Clubthunder Enchanter~Enchantments~My magic has run dry...~\r
+2~Disinterred Medusa~Snakes~What did you do to my snakes!~\r
+2~Dissolver Manipulator-hangman~Itching ropes~You broke my rope!~\r
+2~Gloomy Kraken~Weirdness~Glooooooooooom~\r
+2~Hookweb Ophidian~Bad breath~Noooooooooooo~\r
+2~Leech Ant~Leech~You anti-leecher!~\r
+3~Teferi~Puzzle Box~It was a puzzling experience.~\r
+3~Spineless Thug~Spiked Bat~See you at the crossroads!~\r
+3~Pyromaniac~Flame Thrower~He chants FIRE FIRE as he falls to the ground... a burning heap of flesh.~\r
+3~Evil Enchantress~Deadly Spell~She looked just about as good as she fought.~\r
+3~Killer Leprechaun~Gold Rush~You steal his pot of gold... that's a lot of money!~\r
+3~Avalanche Rider~Huge Snowball~You take his snowboard and snap it in two!~\r
+3~Blundering Idiot~Stupidity~Now there's one person you don't feel sorry for killing!~\r
+3~Militant Anarchist~Molotov Cocktail~Order has been restored for now...~\r
+3~Scathe Zombies~Death Grip~That was perhaps the scariest experience of your life.~\r
+3~Demon Llama~Flamed Spit~You wipe the spit off your face and fling it back at the Llama.~\r
+3~Juggalo~Clown Axe~What is a Juggalo? I don't know!~\r
+3~The Boogie Man~Striking Fear~He's scared you for the very last time!~\r
+3~Mace Plant~Mace~You stepped on me!~\r
+3~Magician Ear~Odd powers~AAAH! Not so loud!~\r
+3~Pudding Barracuda~Bad taste~You don't like my flavor?~\r
+3~Rock Scavenger~Nosepick~Don't leave me here!~\r
+3~Russet Pup~Licking power~Arf?~\r
+3~Scavenging Lich~Spiked club~Bad, bad man!~ \r
+3~Scream Controller~Loud Shriek~My voice....~\r
+4~Living Fire~Scorching Wind~You extinguish the Living Flame once and for all!~\r
+4~Raging Orc~Orcish Artillary~This orc was a bit tougher than you remembered!~\r
+4~Huge Tarantula~Tangling Web~You're glad you overcame your arachniphobia so soon!~\r
+4~Rabid Wolf~Cujo Bite~The mutt falls over dead as white foam drips from its deadly canines...~\r
+4~Goblin Fighter~Morning Star~He almost got you, but you sliced off his head.~\r
+4~Grizzly Bear~Razor Claws~It almost got you this time... better be careful~\r
+4~Skeleton Man~Leg Bone~As a finisher, you wind up with the broad side of your weapon and hit his skull off for a home run!~\r
+4~Young Werewolf~Gnashed Teeth~You scatter the wolf's body parts in hopes he will stay dead!~\r
+4~Dark Infantry~Flesh Reaper~Light has prevailed this time... but it's only so long before you meet again.~\r
+4~Erie Spirit~Deadly Grin~His cousin the ghost was a little bit easier.~\r
+4~Gollum~His Precious~Gollum screams out "MY PRECIOUS" as his small body falls limp from your blow.~\r
+4~Rock Fighter~Boulders~You dodge his last rock, and counter with a low blow, cutting off his legs.~\r
+4~Shadowy Flail Cactus~Spikes~You won?!?!~\r
+4~Slicktome Wight~Acid~You're pretty slick!~\r
+4~Songaxe Sprite~Axe~Lalalalalalaaaaa~\r
+4~Tearblood Roper~Bloodthirst~I have to cry.~\r
+4~Thunder-Basher~Bash~Fine! Be like that!~\r
+4~Unicorn Monster~Horn~My horn! You broke it!~\r
+4~Unknowable Brain Choker~Mental Asphyxiation~But I'm smarter!~\r
+4~Zombie Tangler~Voodoo powers~Well, I'm dead!~\r
+4~Bloomgas~Putrid Gas~Whats that smell?~\r
+4~Brilliant Swarm-Posessor~Sting~Well thats just Brilliant!~\r
+4~Chromatic Imp~Imp Scale~You suck!~\r
+5~Giant Sphinx~Ancient Curse~You look in awe at the great wonder, collapsed at your feet!~\r
+5~Giant Ogre~Big Log~Your wits outmatched the ogre's brawn... big dumb thing.~\r
+5~Massive Cockroach~Piercing Hiss~Where's the exterminator when you need one?~\r
+5~Large Venomous Snake~Poison Fangs~After killing this beast you check for puncture marks... you find none, luckily.~\r
+5~Lizard Man~Deadly Jaws~His scales made for tough armor, and his jaws for a tougher opponent!~\r
+5~Face Dancer~Illusion Scyth~His carcus takes the shape of many things before it dies. His true form is so repulsive, you know why he changed faces so much!~\r
+5~Darklord Longbow Archer~Deadly Bow and Arrows~Your face turns white with horror after you realize you just met the devil's protector!~\r
+5~Hell's Paladin~Sword of Hellfire~This is starting to get tough you think. Do you really want to go to level 6?~\r
+5~The Unknown Soldier~Soul Torture~Who was that? Where was he from? And what was that weapon??~\r
+5~Undead Cult Leader~Lance of Deceit~His words fall on deaf ears... this is one cult you will NOT be part of!~\r
+5~Water Serpent~Forked Tongue~The serpent squeals as you cut off its head!~\r
+5~Silverback Gorilla~Deadly Poison Banana Peel~Was that gorilla or guerilla?~\r
+5~Cosmic Slash Spider~Venom bite~I'm going back to my web!~\r
+5~Crystal Berserker-behemoth~Beserk!~You're just crazy~\r
+5~Elder Corpse-miner~Rotten smell~Back to the 'ol mine~ \r
+5~Gibber Shocker~Electricity~What a shock!~\r
+5~Hellish Choker~Choking~But I'm evil, I'm supposed to win!~\r
+5~Hypnotic Bane~Hypnotic powers~I need to order the new "Hypnotism for Dummies"~\r
+5~Lakevolcano Man~Lava~Perhaps Lava and water make a bad combo..~\r
+5~Memory Orb~Knowledge~I'm still smarter~\r
+5~Meteor Bear~Gihugic Claws~Rawwwwrrrrr~\r
+5~Meteorleaf~Fire~*WHAM*~\r
+5~Quadra Seeker-breaker~Quad~I never liked people like you~\r
+6~Cheap Bastard~Sack of Pennies~You hear him scream, "MY COINS!!" as you run off with his sack.~\r
+6~Disgruntled Postal Worker~AK-47~I guess he went postal!~\r
+6~Unix Administrator~rm -rf you~mv unixadmin /dev/null ; ls unixadmin ... You make sure he's null and void!~\r
+6~Tremble Troll~Tree Trunk Sized Arms~The creature lies shaking in a pool of blood at your feet.~\r
+6~Flood Monkey~Swamp Weed Rope~Don't tie me down! Ooh Ooh! Aah Aah!~\r
+6~Mim Gryan~Needle Fingers~The once razor sharp needles have been grinded to a dull point by your armor.~\r
+6~Galley Beggar~Shrieking Laugh~What the heck was so funny?~\r
+6~Freybug~Rocks~Your mother was a rolling stone!~\r
+6~Psi Morph~Mind Control~It's a good thing this monster couldn't control your spirit!~\r
+6~Aibyteyu~Spear Fork~Where's the Beef!?!?~\r
+6~Atax~Tiny Daggers~This THING took on the form of your best friend! Keep your eyes peeled next time!~\r
+6~Idunkjoo~Trident~You frantically struggle for air as you asphyxiate between the trident's prongs! WHEW!~\r
+6~Sandmountain Hangman~Sand~Arg, there's sand in my eye!~\r
+6~Secret Stench Magician~Stinky Magic~Is that smell really me?~\r
+6~Southern Flare Soaker~Red Flare~I'm going west...~\r
+6~Steel Zombie~Ghost Steel~But.. how!?~\r
+6~Stunhowl Phantom~Ghostly powers~I'm stunned!~\r
+6~Wooden Glove~Splinter~Crap, got a splinter in my glove!~\r
+7~Godzilla~Sparks~<Godzilla> ROAAAAAAR!!!~\r
+7~Night Crawler~Long Tail~You cannot defend against my teleporting!~\r
+7~Large Cactus~10,000 Needles~Pins and needles!!~\r
+7~Fremen Fedaykin~Weirding Way~The death commando calls out for his beloved Muad'Dib before he dies.~\r
+7~Land Shark~Razor Jaws~After you slay the half breed you tear off its fin and watch the pool of blood gather.~\r
+7~Wraith Knight~Dark Sword~You could almost taste your impending doom with every swing of his sword!~\r
+7~Daredevil~Walking Cane~All you can hear him say through his now toothless grin is "I'm not the bad guy!"~\r
+7~Invisible Boxer~Floating Gloves~You had a hard time with this opponent, his blood soaked flesh is now fully visible.~\r
+7~Evil Santa~Bag of Coal~This wicked black cloaked rival can do no more harm!~\r
+7~Referee~Screeching Whistle~Personal foul. Penalty: his life!~\r
+7~Warlock~Magic Staff~His spells were no match for your heroic display of power!~\r
+7~Mafia Boss~Gatling Gun~You made him an offer he couldn't refuse!~\r
+8~Cyclops~Laser Eye~That's one hot laser.\r
+8~Wan's Beast~Crushing Embrace~The hairy thing has finally stopped moving.\r
+8~Lord Mathese~Fencing Sword~You have wiped the sneer off his face once and for all.\r
+8~King Arthur's Evil Twin~Excabular~You feel lucky to have lived, things could have gone sour..\r
+8~Gate Keeper~Large Key~Goodness he was strong! No wonder he's guarding the gate!\r
+8~Flying Elephant~Trunk~You wonder how such a large beast was able to fly.\r
+8~Two Headed Lion~Two Headed Pounce~You have slain the mythical beast and, in the process, have cut off both of its heads!\r
+8~Flying Purple People Eater~Horn on his Head~He was a one eyed one eared flying purple people eater!\r
+8~Red Neck of the East~Trailer Hitch~If you go to your family reunion to pick up women, you might be a redneck!\r
+8~Decomposed Corpse~Horrid Stench~Your stomach churns as you flee from this vile creature's twice killed carcus!\r
+8~Empty Armor~Translucent Sword~The armor falls into a pile as your finishing blow misses completely! Where did it go?\r
+8~Liquid Gold Man~Sword Arm~He was tough, and you were greedy, but the payoff is wonderful!\r
+9~Iron Maiden~Hell and Fire~666! THE NUMBER OF THE BEAST!\r
+9~Black Eye~Blank Stare~The eye seems to stare eternally inward from now on!\r
+9~Bill Gates~Blue Screen of Death~format c: /q ...He's DEAD!\r
+9~Honored Matre~Tantric Ecstacy~The whore's attempts at sexual government have been halted for now!\r
+9~Shaitan~Melange Agony~Shai Hulud's warning must be taken with extreme humility, lest you invoke the wrath of Leto! Bi La Kaifa!\r
+9~Bene Tleilax Master Waff~Poison Tipped Darts~You almost didn't have time to dodge the darts thrown from his sleeves!\r
+9~Reverend Mother~Gom Jabbar~Her muscle conditioning was exquisite... but yours is better!\r
+9~Extremely Large Dingo~Sharp Canines~That stupid mutt won't bother you anymore mate!\r
+9~Walking Ebola Virus~Disease Ridden Body~You better decontaminate yourself, lest you find yourself infected by the vile monster!\r
+9~Corprus Stalker~Swollen Limbs~He was slow, but extremely powerful! The corprus disease must do something to his body...\r
+9~Alien Priest~Religious Banter~Green blood oozes from the carcus of this deceased missionary from beyond...\r
+9~Mad Scientist~Hydrochloric Acid~The strange man cackles as he crawls away. All you catch is something about chemistry... ?\r
+10~Baby Lag Beast~Lag Knife~It shrinks up into a little ball and slowly fades away.\r
+10~Horrible Smell~Stink Bombs~You finish it off by hanging up a pine tree deodorizer around its neck.\r
+10~Small Lag Beast~Glowing Lag Knife~Wow, that was an ugly little thing!\r
+10~Undead Egyptian Slave~Carpenter's Mallet~That will be the last time he will strike with a hammer again!\r
+10~Medium Lag Beast~Lag dagger~You wipe off the brain matter left behind. You just had this armor washed too!\r
+10~Boat Builder~A Large Adz~The adz falls to the ground next to the builder's corpse.\r
+10~Unwelcomed Guest~A Fruit Cake with Nuts~Easily one of the funnest kills today!\r
+10~John The Bard~An Oak Staff~He earned \1fhis\1f wings earlier than he had planned.\r
+10~Mad Summoner~Swarm of Bees~The bees begin devouring the summoner's corpse. You slowly back away...\r
+10~Ugly Harlot~Rock Filled Purse~Her tattered purse falls as she crumples to the ground.\r
+10~White Ninja~Large Sai~As he begins to fall, a puff of smoke appears and the corpse is gone...hmmm..\r
+10~Werewolf~Razor Sharp Fangs~The werewolf yelps like a kicked puppy, then turns into human form before releasing its final breath.\r
+Large Lag Beast~Lag Sword~These things keep getting nastier and nastier.\r
+11~Mean Lag Beast~Glowing Lag Broadsword~It slowly doubles over, as the halves of its body seperate into two peices from your blow...\r
+11~Lag Beast Lord~Huge Lag Battle Axe~It explodes in a massive array of bright light.\r
+11~Black Widow~Dripping Fangs~As you deliver the final blow, the spider shrivles up on its back and twitches..\r
+11~Mephistopheles~Faustian Sword~The corpse erupts into a burst of extremely hot flames before disappearing into the void.\r
+11~Amen Ra~Large Golden Staff~The heavens shake violently at the death of this one...\r
+11~Insane Clown~Big Red Shoe~DEAD! No loss here, you hate clowns anyway...\r
+11~Black Wyrm~Bloodied Claws~It dies with a piercing hiss...\r
+11~UnHoly Wrath~Sword of Armageddon~Shadows engulf the corpse. A chill passes through the air.\r
+11~Stone Giant~Huge Boudler~The once fearsome Stone Giant turns into a pile of pebbles.\r
+11~Evil Unicorn~Large Golden Horn~The Unicorn's beautiful mane is now covered in blood as it falls over, dead.\r
+11~Troll~Large Spiked Club~The smell is overwhelming, this is a good place for a stick-up.\r
+12~Insane Lag Beast~Glowing claws~Cackling, it looks at you and giggles before his head separates from his body.\r
+12~Ghost of the Mean Lag Beast~Fangs covered in feces~With a soft eerie moan, the ghost dissipates.\r
+12~Imhotep~Shimmering Sword~Thunder deafens all who live, you feel a surge of power pass through you, and you ask yourself, "What have I done?"\r
+12~Holy Wrath~Hand of God~If it bleeds and dies, then it was no god.\r
+12~Inu Yasha~The Tetsusaiga~Just before he dies, you notice his eyes turn red! You quickly run away victorious. (You hope)\r
+12~Sesshoumaru~The Tensaiga~You see The Tensaiga glow just before Sesshoumaru's body seemingly evaporates...\r
+12~Floating Bastard Sword~Slicing Blade~The sword falls to the ground motionless, then promptly rusts...they just don't make em like they used to...\r
+12~Floating Eye~Gaze of Death~Liquid oozes from the punctures, ewww...\r
+12~Ghost of Mephistopheles~Glowing Faustian Sword~You sent him straight back to Hell...again...\r
+12~Screeching Wraith~Peircing Scream~Ahh, precious silence, you still have ringing in your ears, though...\r
+12~Ogre Lord~Titan's Hammer~He was tough, but not tough enough.\r
+12~Mumrah the Everliving~Touch of Decay~Everliving? HAH! Riggghht...
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level1.dat b/gameserv-2.0/data/monsters/level1.dat
deleted file mode 100644 (file)
index 3135aa7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Slime~Acid Goo~The slime oozes into nothing... you clean the acid goo off of your weapon~\r
-Ghost~Cold Breath~You feel a chill as the spirit leaves the realm.~\r
-Ugly Rodent~Sharp Teeth~You stomp on the Ugly Rodent's remains for a finishing blow.~\r
-Whart Hog~Tusks~You cook and eat the hog for good measure!~\r
-Pesky Kid~Slingshot~You take his slingshot and snap the band, sending the kid crying home to mom~\r
-Playground Bully~Painful Noogie~You give him an indian burn, and punt him across the schoolyard!~\r
-Small Imp~Dagger~You can't help but laugh as he stumbles and falls onto his own dagger!~\r
-Little Monkey~Monkey Wrench~You want to cook it, but you just can't think of eating something that looks so human!~\r
-Grub Worm~Minor Nudge~You decide to save the poor little fella for your next fishing trip.~\r
-Drakee~Tail Slap~You hold the little Drakee by its tale and slam it down on a dry stump!~\r
-Fat Slob~Smelly Breath~You kick his stomach for fun, and are thrown back by the spring of it all!~\r
-Lost Warrior~Long Sword~You give him a proper burial in respect for the dead warrior.~\r
-Harry Potter~Nimbus 2000~I don't go looking for trouble. Trouble usually finds me.~\r
-Snake Nidhogg~Crushtail~CURSE YOU!~\r
-Seven of Nine~Nanoprobes~Death is irrelevant, resistance is futile~\r
-Great Smiley~Happiness~Wheeeeeeeee, party!! :D~\r
-Crud Puppy~Bad Office Coffee~My evil powers have grown weak!~\r
-Layla~Sexy Kiss of Insanity~She lookes at you with her misleading eyes, almost making you feel bad you killed her.~\r
-Ignatz Despoiler-of-Maidens~Bludgeon~Blessed with his own stupidity!~\r
-King Kong~Skyscraper~I want my woman!~\r
-Sergeant Gunnary Heartman~Drill Voice~You still need training boy!~\r
-Cartman~Flammable Fart~Respect my authority!
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level10.dat b/gameserv-2.0/data/monsters/level10.dat
deleted file mode 100644 (file)
index 7e5577c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die)\r
-# Level 10 <damaged at damaged.no-ip.com>\r
-Baby Lag Beast~Lag Knife~It shrinks up into a little ball and slowly fades away.\r
-Horrible Smell~Stink Bombs~You finish it off by hanging up a pine tree deodorizer around its neck.\r
-Small Lag Beast~Glowing Lag Knife~Wow, that was an ugly little thing!\r
-Undead Egyptian Slave~Carpenter's Mallet~That will be the last time he will strike with a hammer again!\r
-Medium Lag Beast~Lag dagger~You wipe off the brain matter left behind. You just had this armor washed too!\r
-Boat Builder~A Large Adz~The adz falls to the ground next to the builder's corpse.\r
-Unwelcomed Guest~A Fruit Cake with Nuts~Easily one of the funnest kills today!\r
-John The Bard~An Oak Staff~He earned \1fhis\1f wings earlier than he had planned.\r
-Mad Summoner~Swarm of Bees~The bees begin devouring the summoner's corpse. You slowly back away...\r
-Ugly Harlot~Rock Filled Purse~Her tattered purse falls as she crumples to the ground.\r
-White Ninja~Large Sai~As he begins to fall, a puff of smoke appears and the corpse is gone...hmmm..\r
-Werewolf~Razor Sharp Fangs~The werewolf yelps like a kicked puppy, then turns into human form before releasing its final breath.
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level11.dat b/gameserv-2.0/data/monsters/level11.dat
deleted file mode 100644 (file)
index a11236e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die)\r
-# Level 11 <damaged at damaged.no-ip.com>\r
-Large Lag Beast~Lag Sword~These things keep getting nastier and nastier.\r
-Mean Lag Beast~Glowing Lag Broadsword~It slowly doubles over, as the halves of its body seperate into two peices from your blow...\r
-Lag Beast Lord~Huge Lag Battle Axe~It explodes in a massive array of bright light.\r
-Black Widow~Dripping Fangs~As you deliver the final blow, the spider shrivles up on its back and twitches..\r
-Mephistopheles~Faustian Sword~The corpse erupts into a burst of extremely hot flames before disappearing into the void.\r
-Amen Ra~Large Golden Staff~The heavens shake violently at the death of this one...\r
-Insane Clown~Big Red Shoe~DEAD! No loss here, you hate clowns anyway...\r
-Black Wyrm~Bloodied Claws~It dies with a piercing hiss...\r
-UnHoly Wrath~Sword of Armageddon~Shadows engulf the corpse. A chill passes through the air.\r
-Stone Giant~Huge Boudler~The once fearsome Stone Giant turns into a pile of pebbles.\r
-Evil Unicorn~Large Golden Horn~The Unicorn's beautiful mane is now covered in blood as it falls over, dead.\r
-Troll~Large Spiked Club~The smell is overwhelming, this is a good place for a stick-up.
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level12.dat b/gameserv-2.0/data/monsters/level12.dat
deleted file mode 100644 (file)
index 0e53d91..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die) \r
-# Level 12 <damaged at damaged.no-ip.com>\r
-Insane Lag Beast~Glowing claws~Cackling, it looks at you and giggles before his head separates from his body.\r
-Ghost of the Mean Lag Beast~Fangs covered in feces~With a soft eerie moan, the ghost dissipates.\r
-Imhotep~Shimmering Sword~Thunder deafens all who live, you feel a surge of power pass through you, and you ask yourself, "What have I done?"\r
-Holy Wrath~Hand of God~If it bleeds and dies, then it was no god.\r
-Inu Yasha~The Tetsusaiga~Just before he dies, you notice his eyes turn red! You quickly run away victorious. (You hope)\r
-Sesshoumaru~The Tensaiga~You see The Tensaiga glow just before Sesshoumaru's body seemingly evaporates...\r
-Floating Bastard Sword~Slicing Blade~The sword falls to the ground motionless, then promptly rusts...they just don't make em like they used to...\r
-Floating Eye~Gaze of Death~Liquid oozes from the punctures, ewww...\r
-Ghost of Mephistopheles~Glowing Faustian Sword~You sent him straight back to Hell...again...\r
-Screeching Wraith~Peircing Scream~Ahh, precious silence, you still have ringing in your ears, though...\r
-Ogre Lord~Titan's Hammer~He was tough, but not tough enough.\r
-Mumrah the Everliving~Touch of Decay~Everliving? HAH! Riggghht...
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level2.dat b/gameserv-2.0/data/monsters/level2.dat
deleted file mode 100644 (file)
index 861c177..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Lost Warrior's Cousin Larry~Wood Axe~He was pretty pissed you killed his cousin, but he seems to have suffered the same fate!~\r
-Sandman~Sleeping Dust~You put the sandman to his final sleep.~\r
-Skank~Stiletto Heel~Your pimp hand is way strong!~\r
-Goblin Gardener~Garden Spade~You trample on his garden after slaying him... that felt good!~\r
-Evil Elf~Dark Bow~Elves are usually nice you thought... hmm.~\r
-Viking Warrior~Broad Sword~You heard vikings were big, but not THAT big!~\r
-Wicked Witch~Cackling Laugh~Just for kicks, you splash some water on her and watch her melt.~\r
-Vampire Bat~Blood Sucking Fangs~You fry up the bat and eat it... needs gaaahlic.~\r
-Thorn Bush~101 Thorns~You set the bush ablaze and roast some marshmallows.~\r
-Barbarian~Heavy Sword~You listen to him moan as he falls over dead.~\r
-Crypt Rat~Stinging Bite~You squash the little rodent for fear that it might not be dead.~\r
-Small Orc~Sharp Blade~It's an ugly one, and it would've grown up to be a terror...~\r
-Virus Bots~Trojan Horses~You run a quick virus scan before you leave this software in the dust.\r
-Hex Maniac~Satanic Powers~You'll go to hell!~\r
-Eight-legged-freak~Venom~We'll meet again!~\r
-Anger Piercer~Pointy sword~You broke my sword!~\r
-Bookwarp Cadaver~Rotten smell~Don't let me rott!~\r
-Clubthunder Enchanter~Enchantments~My magic has run dry...~\r
-Disinterred Medusa~Snakes~What did you do to my snakes!~\r
-Dissolver Manipulator-hangman~Itching ropes~You broke my rope!~\r
-Gloomy Kraken~Weirdness~Glooooooooooom~\r
-Hookweb Ophidian~Bad breath~Noooooooooooo~\r
-Leech Ant~Leech~You anti-leecher!~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level3.dat b/gameserv-2.0/data/monsters/level3.dat
deleted file mode 100644 (file)
index 595eb01..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Teferi~Puzzle Box~It was a puzzling experience.~\r
-Spineless Thug~Spiked Bat~See you at the crossroads!~\r
-Pyromaniac~Flame Thrower~He chants FIRE FIRE as he falls to the ground... a burning heap of flesh.~\r
-Evil Enchantress~Deadly Spell~She looked just about as good as she fought.~\r
-Killer Leprechaun~Gold Rush~You steal his pot of gold... that's a lot of money!~\r
-Avalanche Rider~Huge Snowball~You take his snowboard and snap it in two!~\r
-Blundering Idiot~Stupidity~Now there's one person you don't feel sorry for killing!~\r
-Militant Anarchist~Molotov Cocktail~Order has been restored for now...~\r
-Scathe Zombies~Death Grip~That was perhaps the scariest experience of your life.~\r
-Demon Llama~Flamed Spit~You wipe the spit off your face and fling it back at the Llama.~\r
-Juggalo~Clown Axe~What is a Juggalo? I don't know!~\r
-The Boogie Man~Striking Fear~He's scared you for the very last time!~\r
-Mace Plant~Mace~You stepped on me!~\r
-Magician Ear~Odd powers~AAAH! Not so loud!~\r
-Pudding Barracuda~Bad taste~You don't like my flavor?~\r
-Rock Scavenger~Nosepick~Don't leave me here!~\r
-Russet Pup~Licking power~Arf?~\r
-Scavenging Lich~Spiked club~Bad, bad man!~ \r
-Scream Controller~Loud Shriek~My voice....~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level4.dat b/gameserv-2.0/data/monsters/level4.dat
deleted file mode 100644 (file)
index 34b17fd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Living Fire~Scorching Wind~You extinguish the Living Flame once and for all!~\r
-Raging Orc~Orcish Artillary~This orc was a bit tougher than you remembered!~\r
-Huge Tarantula~Tangling Web~You're glad you overcame your arachniphobia so soon!~\r
-Rabid Wolf~Cujo Bite~The mutt falls over dead as white foam drips from its deadly canines...~\r
-Goblin Fighter~Morning Star~He almost got you, but you sliced off his head.~\r
-Grizzly Bear~Razor Claws~It almost got you this time... better be careful~\r
-Skeleton Man~Leg Bone~As a finisher, you wind up with the broad side of your weapon and hit his skull off for a home run!~\r
-Young Werewolf~Gnashed Teeth~You scatter the wolf's body parts in hopes he will stay dead!~\r
-Dark Infantry~Flesh Reaper~Light has prevailed this time... but it's only so long before you meet again.~\r
-Erie Spirit~Deadly Grin~His cousin the ghost was a little bit easier.~\r
-Gollum~Precious Treasure~Gollum screams out "MY PRECIOUS" as his small body falls limp from your blow.~\r
-Rock Fighter~Boulders~You dodge his last rock, and counter with a low blow, cutting off his legs.~\r
-Shadowy Flail Cactus~Spikes~You won?!?!~\r
-Slicktome Wight~Acid~You're pretty slick!~\r
-Songaxe Sprite~Axe~Lalalalalalaaaaa~\r
-Tearblood Roper~Bloodthirst~I have to cry.~\r
-Thunder-Basher~Bash~Fine! Be like that!~\r
-Unicorn Monster~Horn~My horn! You broke it!~\r
-Unknowable Brain Choker~Mental Asphyxiation~But I'm smarter!~\r
-Zombie Tangler~Voodoo powers~Well, I'm dead!~\r
-Bloomgas~Putrid Gas~Whats that smell?~\r
-Brilliant Swarm-Posessor~Sting~Well thats just Brilliant!~\r
-Chromatic Imp~Imp Scale~You suck!~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level5.dat b/gameserv-2.0/data/monsters/level5.dat
deleted file mode 100644 (file)
index 8e00754..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# Name~Weapon~~Death Phrase (said when they die)\r
-#Level 5\r
-Giant Sphinx~Ancient Curse~You look in awe at the great wonder, collapsed at your feet!~\r
-Giant Ogre~Big Log~Your wits outmatched the ogre's brawn... big dumb thing.~\r
-Massive Cockroach~Piercing Hiss~Where's the exterminator when you need one?~\r
-Large Venomous Snake~Poison Fangs~After killing this beast you check for puncture marks... you find none, luckily.~\r
-Lizard Man~Deadly Jaws~His scales made for tough armor, and his jaws for a tougher opponent!~\r
-Face Dancer~Illusion Scyth~His carcus takes the shape of many things before it dies. His true form is so repulsive, you know why he changed faces so much!~\r
-Darklord Longbow Archer~Deadly Bow and Arrows~Your face turns white with horror after you realize you just met the devil's protector!~\r
-Hell's Paladin~Sword of Hellfire~This is starting to get tough you think. Do you really want to go to level 6?~\r
-The Unknown Soldier~Soul Torture~Who was that? Where was he from? And what was that weapon??~\r
-Undead Cult Leader~Lance of Deceit~His words fall on deaf ears... this is one cult you will NOT be part of!~\r
-Water Serpent~Forked Tongue~The serpent squeals as you cut off its head!~\r
-Silverback Gorilla~Deadly Poison Banana Peel~Was that gorilla or guerilla?~\r
-Cosmic Slash Spider~Venom bite~I'm going back to my web!~\r
-Crystal Berserker-behemoth~Beserk!~You're just crazy~\r
-Elder Corpse-miner~Rotten smell~Back to the 'ol mine~ \r
-Gibber Shocker~Electricity~What a shock!~\r
-Hellish Choker~Choking~But I'm evil, I'm supposed to win!~\r
-Hypnotic Bane~Hypnotic powers~I need to order the new "Hypnotism for Dummies"~\r
-Lakevolcano Man~Lava~Perhaps Lava and water make a bad combo..~\r
-Memory Orb~Knowledge~I'm still smarter~\r
-Meteor Bear~Gihugic Claws~Rawwwwrrrrr~\r
-Meteorleaf~Fire~*WHAM*~\r
-Quadra Seeker-breaker~Quad~I never liked people like you~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level6.dat b/gameserv-2.0/data/monsters/level6.dat
deleted file mode 100644 (file)
index 139da58..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die)\r
-#Level 6\r
-Cheap Bastard~Sack of Pennies~You hear him scream, "MY COINS!!" as you run off with his sack.~\r
-Disgruntled Postal Worker~AK-47~I guess he went postal!~\r
-Unix Administrator~rm -rf you~mv unixadmin /dev/null ; ls unixadmin ... You make sure he's null and void!~\r
-Tremble Troll~Tree Trunk Sized Arms~The creature lies shaking in a pool of blood at your feet.~\r
-Flood Monkey~Swamp Weed Rope~Don't tie me down! Ooh Ooh! Aah Aah!~\r
-Mim Gryan~Needle Fingers~The once razor sharp needles have been grinded to a dull point by your armor.~\r
-Galley Beggar~Shrieking Laugh~What the heck was so funny?~\r
-Freybug~Rocks~Your mother was a rolling stone!~\r
-Psi Morph~Mind Control~It's a good thing this monster couldn't control your spirit!~\r
-Aibyteyu~Spear Fork~Where's the Beef!?!?~\r
-Atax~Tiny Daggers~This THING took on the form of your best friend! Keep your eyes peeled next time!~\r
-Idunkjoo~Trident~You frantically struggle for air as you asphyxiate between the trident's prongs! WHEW!~\r
-Sandmountain Hangman~Sand~Arg, there's sand in my eye!~\r
-Secret Stench Magician~Stinky Magic~Is that smell really me?~\r
-Southern Flare Soaker~Red Flare~I'm going west...~\r
-Steel Zombie~Ghost Steel~But.. how!?~\r
-Stunhowl Phantom~Ghostly powers~I'm stunned!~\r
-Wooden Glove~Splinter~Crap, got a splinter in my glove!~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level7.dat b/gameserv-2.0/data/monsters/level7.dat
deleted file mode 100644 (file)
index 75fe7c9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die)\r
-#Level 7\r
-Godzilla~Sparks~<Godzilla> ROAAAAAAR!!!~\r
-Night Crawler~Long Tail~You cannot defend against my teleporting!~\r
-Large Cactus~10,000 Needles~Pins and needles!!~\r
-Fremen Fedaykin~Weirding Way~The death commando calls out for his beloved Muad'Dib before he dies.~\r
-Land Shark~Razor Jaws~After you slay the half breed you tear off its fin and watch the pool of blood gather.~\r
-Wraith Knight~Dark Sword~You could almost taste your impending doom with every swing of his sword!~\r
-Daredevil~Walking Cane~All you can hear him say through his now toothless grin is "I'm not the bad guy!"~\r
-Invisible Boxer~Floating Gloves~You had a hard time with this opponent, his blood soaked flesh is now fully visible.~\r
-Evil Santa~Bag of Coal~This wicked black cloaked rival can do no more harm!~\r
-Referee~Screeching Whistle~Personal foul. Penalty: his life!~\r
-Warlock~Magic Staff~His spells were no match for your heroic display of power!~\r
-Mafia Boss~Gatling Gun~You made him an offer he couldn't refuse!~
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level8.dat b/gameserv-2.0/data/monsters/level8.dat
deleted file mode 100644 (file)
index 0661774..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die)\r
-#Level 8\r
-Cyclops~Laser Eye~That's one hot laser.\r
-Wan's Beast~Crushing Embrace~The hairy thing has finally stopped moving.\r
-Lord Mathese~Fencing Sword~You have wiped the sneer off his face once and for all.\r
-King Arthur's Evil Twin~Excabular~You feel lucky to have lived, things could have gone sour..\r
-Gate Keeper~Large Key~Goodness he was strong! No wonder he's guarding the gate!\r
-Flying Elephant~Trunk~You wonder how such a large beast was able to fly.\r
-Two Headed Lion~Two Headed Pounce~You have slain the mythical beast and, in the process, have cut off both of its heads!\r
-Flying Purple People Eater~Horn on his Head~He was a one eyed one eared flying purple people eater!\r
-Red Neck of the East~Trailer Hitch~If you go to your family reunion to pick up women, you might be a redneck!\r
-Decomposed Corpse~Horrid Stench~Your stomach churns as you flee from this vile creature's twice killed carcus!\r
-Empty Armor~Translucent Sword~The armor falls into a pile as your finishing blow misses completely! Where did it go?\r
-Liquid Gold Man~Sword Arm~He was tough, and you were greedy, but the payoff is wonderful!
\ No newline at end of file
diff --git a/gameserv-2.0/data/monsters/level9.dat b/gameserv-2.0/data/monsters/level9.dat
deleted file mode 100644 (file)
index 08cf3f4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Name~Weapon~Death Phrase (said when they die) level 9\r
-# Level 9\r
-Iron Maiden~Hell and Fire~666! THE NUMBER OF THE BEAST!\r
-Black Eye~Blank Stare~The eye seems to stare eternally inward from now on!\r
-Bill Gates~Blue Screen of Death~format c: /q ...He's DEAD!\r
-Honored Matre~Tantric Ecstacy~The whore's attempts at sexual government have been halted for now!\r
-Shaitan~Melange Agony~Shai Hulud's warning must be taken with extreme humility, lest you invoke the wrath of Leto! Bi La Kaifa!\r
-Bene Tleilax Master Waff~Poison Tipped Darts~You almost didn't have time to dodge the darts thrown from his sleeves!\r
-Reverend Mother~Gom Jabbar~Her muscle conditioning was exquisite... but yours is better!\r
-Extremely Large Dingo~Sharp Canines~That stupid mutt won't bother you anymore mate!\r
-Walking Ebola Virus~Disease Ridden Body~You better decontaminate yourself, lest you find yourself infected by the vile monster!\r
-Corprus Stalker~Swollen Limbs~He was slow, but extremely powerful! The corprus disease must do something to his body...\r
-Alien Priest~Religious Banter~Green blood oozes from the carcus of this deceased missionary from beyond...\r
-Mad Scientist~Hydrochloric Acid~The strange man cackles as he crawls away. All you catch is something about chemistry... ?
\ No newline at end of file
index 9bbcd8e31c222365d10a96a15fe9269dd1eecc31..a996bcbc3c8d01bd2c0c689688611a8a820e2c05 100644 (file)
@@ -9,6 +9,8 @@ using GameServ::DataLayer::IDAOFactory;
 using GameServ::DataLayer::DataAccessObjects::IPlayerDAO;\r
 #include <GameServ/DataLayer/IItemDAO.h>\r
 using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+#include <GameServ/DataLayer/IMonsterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
 \r
 \r
 #include <boost/smart_ptr/shared_ptr.hpp>\r
@@ -30,6 +32,7 @@ namespace GameServ { namespace DataLayer { namespace File
                \r
                virtual shared_ptr<IPlayerDAO> GetPlayerDAO(void) const;\r
                virtual shared_ptr<IItemDAO> GetItemDAO(void) const;\r
+               virtual shared_ptr<IMonsterDAO> GetMonsterDAO(void) const;\r
 \r
        private:\r
 \r
index b419b33f9b1bd3b1e02632b4030af44fc58f5167..ded96f474a41e3882b33e181b82058e73f357214 100644 (file)
@@ -16,6 +16,9 @@ namespace GameServ { namespace DataLayer { namespace File {
 \r
                static string CreateItemId(const string &Number);\r
                static string GetItemNumberFromId(const string &Id);\r
+\r
+               static string CreateMonsterId(const unsigned int &Level, const string &Name);\r
+\r
        private:\r
                FileId();\r
                ~FileId();\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..120718519c1c1c038337feeca5216708b9d1e51a 100644 (file)
@@ -0,0 +1,63 @@
+#ifndef __GS__FILEMONSTERDAO_H__\r
+#define __GS__FILEMONSTERDAO_H__\r
+\r
+#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
+#include <GameServ/DataLayer/IMonsterDAO.h>\r
+using GameServ::GameLayer::GameObjects::MonsterGO;\r
+using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <vector>\r
+using std::vector;\r
+\r
+#include <map>\r
+using std::map;\r
+\r
+namespace GameServ {  namespace DataLayer { namespace File\r
+{\r
+       //! File implementation of IMonsterDAO interface\r
+       /*!\r
+               If you're using an File datasource, you will be using this\r
+               DAO to access Monsters.\r
+       */\r
+       class FileMonsterDAO : public IMonsterDAO\r
+       {\r
+       public:\r
+               // Ctors, Dtors ///////////////////////////////////////////////////////\r
+               FileMonsterDAO(void);\r
+               FileMonsterDAO(const string &filename);\r
+               virtual ~FileMonsterDAO();\r
+\r
+               // Methods ////////////////////////////////////////////////////////////\r
+               virtual shared_ptr<MonsterGO> GetById(const string &Id) const;\r
+\r
+               virtual vector< shared_ptr<MonsterGO> > GetMonstersByLevel(const unsigned int &Level) const;\r
+\r
+               virtual bool IdExists(const string &Id) const;\r
+\r
+               void LoadMonsterCache(void);\r
+\r
+       private:\r
+               //! Data file\r
+               string mFilename;\r
+\r
+               // Helper Methods /////////////////////////////////////////////////////\r
+\r
+               //! Creates the MonsterGO found at iterator position\r
+               shared_ptr<MonsterGO> CreateMonsterFromLine(const string &line) const;\r
+\r
+               //! Get the Monster database file path\r
+               string GetMonsterFilePath(void) const;\r
+\r
+               void Initialize(const string &filename);\r
+\r
+               map<string, shared_ptr<MonsterGO> > spMonsterCache;\r
+       };\r
+} } } // GameServ.DataLayer.DataAccessObjects.File\r
+\r
+#endif // __GS__FileMonsterDAO_H__\r
index c6465afb8f1d66c9e59e152f84bb0aaf401cf353..101a2dc9e8443dfe60468733f27a725c88549c05 100644 (file)
@@ -5,6 +5,8 @@
 using GameServ::DataLayer::DataAccessObjects::IPlayerDAO;\r
 #include <GameServ/DataLayer/IItemDAO.h>\r
 using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+#include <GameServ/DataLayer/IMonsterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
 \r
 \r
 #include <boost/smart_ptr/shared_ptr.hpp>\r
@@ -31,6 +33,9 @@ namespace GameServ { namespace DataLayer
                //! Item DataAccessObject for all item related operations\r
                virtual shared_ptr<IItemDAO> GetItemDAO(void) const = 0;\r
 \r
+               //! Monster DataAccessObject for all monster related operations\r
+               virtual shared_ptr<IMonsterDAO> GetMonsterDAO(void) const = 0;\r
+\r
        private:\r
 \r
        };\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..faee2dd748bd1fc6808de08ca64c36f2a5a8c251 100644 (file)
@@ -0,0 +1,49 @@
+#ifndef __GS__ILEVELDAO_H__\r
+#define __GS__ILEVELDAO_H__\r
+\r
+#include <GameServ/GameLayer/GameObjects/LevelGO.h>\r
+using GameServ::GameLayer::GameObjects::LevelGO;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <list>\r
+using std::list;\r
+#include <string>\r
+using std::string;\r
+\r
+namespace GameServ { namespace DataLayer { namespace DataAccessObjects\r
+{\r
+       //! Interface for Level Data Access Objects \r
+       /*! \r
+               This is the interface for all Level DAOs.  Each specific datasource\r
+               will need to inherit this common interface.\r
+       */\r
+       class ILevelDAO\r
+       {\r
+       public:\r
+               // Ctors, Dtors ///////////////////////////////////////////////////////\r
+               ILevelDAO(void);\r
+               virtual ~ILevelDAO(void);       // Needs to be virtual \r
+\r
+               //! Get the Level using a unique data/object Id\r
+               /*!\r
+                       \param Id Unique identifier\r
+                       \return A boost shared pointer to a Level game object if found\r
+                       otherwise the list is empty.\r
+               */\r
+               virtual shared_ptr<LevelGO> GetById(const string &Id) const = 0;\r
+\r
+               //! Function to quickly search to see if an Id exists or not\r
+               /*!\r
+               \param Id The Id of the game object to search for\r
+               \return true if the Id is valid and exists in the data, false otherwise\r
+               */\r
+               virtual bool IdExists(const string &Id) const = 0;\r
+\r
+       private:\r
+               \r
+               \r
+       };\r
+} } }\r
+#endif // __GS__ILevelDAO_H__\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8354e52bd27337031581b9db79266dba07a64453 100644 (file)
@@ -0,0 +1,49 @@
+#ifndef __GS__IMASTERDAO_H__\r
+#define __GS__IMASTERDAO_H__\r
+\r
+#include <GameServ/GameLayer/GameObjects/MasterGO.h>\r
+using GameServ::GameLayer::GameObjects::MasterGO;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <list>\r
+using std::list;\r
+#include <string>\r
+using std::string;\r
+\r
+namespace GameServ { namespace DataLayer { namespace DataAccessObjects\r
+{\r
+       //! Interface for Master Data Access Objects \r
+       /*! \r
+               This is the interface for all Master DAOs.  Each specific datasource\r
+               will need to inherit this common interface.\r
+       */\r
+       class IMasterDAO\r
+       {\r
+       public:\r
+               // Ctors, Dtors ///////////////////////////////////////////////////////\r
+               IMasterDAO(void);\r
+               virtual ~IMasterDAO(void);      // Needs to be virtual \r
+\r
+               //! Get the Master using a unique data/object Id\r
+               /*!\r
+                       \param Id Unique identifier\r
+                       \return A boost shared pointer to a Master game object if found\r
+                       otherwise the list is empty.\r
+               */\r
+               virtual shared_ptr<MasterGO> GetById(const string &Id) const = 0;\r
+\r
+               //! Function to quickly search to see if an Id exists or not\r
+               /*!\r
+               \param Id The Id of the game object to search for\r
+               \return true if the Id is valid and exists in the data, false otherwise\r
+               */\r
+               virtual bool IdExists(const string &Id) const = 0;\r
+\r
+       private:\r
+               \r
+               \r
+       };\r
+} } }\r
+#endif // __GS__IMasterDAO_H__\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe6b9fc500674c8817585228958010df76645098 100644 (file)
@@ -0,0 +1,51 @@
+#ifndef __GS__IMONSTERDAO_H__\r
+#define __GS__IMONSTERDAO_H__\r
+\r
+#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
+using GameServ::GameLayer::GameObjects::MonsterGO;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <vector>\r
+using std::vector;\r
+#include <string>\r
+using std::string;\r
+\r
+namespace GameServ { namespace DataLayer { namespace DataAccessObjects\r
+{\r
+       //! Interface for Monster Data Access Objects \r
+       /*! \r
+               This is the interface for all Monster DAOs.  Each specific datasource\r
+               will need to inherit this common interface.\r
+       */\r
+       class IMonsterDAO\r
+       {\r
+       public:\r
+               // Ctors, Dtors ///////////////////////////////////////////////////////\r
+               IMonsterDAO(void);\r
+               virtual ~IMonsterDAO(void);     // Needs to be virtual \r
+\r
+               //! Get the Monster using a unique data/object Id\r
+               /*!\r
+                       \param Id Unique identifier\r
+                       \return A boost shared pointer to a Monster game object if found\r
+                       otherwise the list is empty.\r
+               */\r
+               virtual shared_ptr<MonsterGO> GetById(const string &Id) const = 0;\r
+\r
+               //! Function to quickly search to see if an Id exists or not\r
+               /*!\r
+               \param Id The Id of the game object to search for\r
+               \return true if the Id is valid and exists in the data, false otherwise\r
+               */\r
+               virtual bool IdExists(const string &Id) const = 0;\r
+\r
+               virtual vector< shared_ptr<MonsterGO> > GetMonstersByLevel(const unsigned int &Level) const = 0;\r
+\r
+       private:\r
+               \r
+               \r
+       };\r
+} } }\r
+#endif // __GS__IMonsterDAO_H__\r
index 84eb273756adfcd8095e35c1a9a543265fc80747..bcf883f51c4bf1018448e3316d48e7f3df265633 100644 (file)
@@ -45,21 +45,9 @@ namespace GameServ { namespace GameLayer { namespace GameObjects
                //! Property get - Master\r
                shared_ptr<MasterGO> Master(void) const;\r
 \r
-               //! Property set - Monster list\r
-               void Monsters(const vector< shared_ptr<MonsterGO> > &spMonsters);\r
 \r
-               //! Property get - Monster List\r
-               vector< shared_ptr<MonsterGO> > Monsters(void) const;\r
-\r
-               //! Remove a monster from the list\r
-               void RemoveMonster(shared_ptr<MonsterGO> spMonster);\r
-\r
-               //! Add a monster to the list\r
-               void AddMonster(shared_ptr<MonsterGO> spMonster);\r
 \r
        private:\r
-\r
-               vector< shared_ptr<MonsterGO> > mspMonsters;\r
                shared_ptr<MasterGO> mspMaster;\r
                \r
        };\r
index 482ecfa6c847398b8bd1e2de2d0f80ffaaeeaf60..fa9c3fee71c877c1bb01f744a993bee1fa8fb780 100644 (file)
@@ -22,30 +22,35 @@ namespace GameServ { namespace GameLayer { namespace GameObjects
                //! Property set - Name\r
                void Name(const string &value);\r
 \r
+               //! Property get - Level\r
+               unsigned int Level(void) const;\r
+               //! Property set - Level\r
+               void Level(const unsigned int &value);\r
+\r
                //! Property get - Gold\r
                unsigned long int Gold(void) const;\r
                //! Property set - Gold\r
                void Gold(const unsigned long int &value);\r
 \r
                //! Property get - Health\r
-               int Health(void) const;\r
+               unsigned int Health(void) const;\r
                //! Property set - Health\r
-               void Health(const int &value);\r
+               void Health(const unsigned int &value);\r
 \r
                //! Property get - Max Health\r
-               int MaxHealth(void) const;\r
+               unsigned int MaxHealth(void) const;\r
                //! Property set - Max Health\r
-               void MaxHealth(const int &value);\r
+               void MaxHealth(const unsigned int &value);\r
 \r
                //! Property get - Strength\r
-               int Strength(void) const;\r
+               unsigned int Strength(void) const;\r
                //! Property set - Strength\r
-               void Strength(const int &value);\r
+               void Strength(const unsigned int &value);\r
 \r
                //! Property get - Defense\r
-               int Defense(void) const;\r
+               unsigned int Defense(void) const;\r
                //! Property set - Defense\r
-               void Defense(const int &value);\r
+               void Defense(const unsigned int &value);\r
 \r
                //! Property get - Weapon Name\r
                string WeaponName(void) const;\r
@@ -67,12 +72,15 @@ namespace GameServ { namespace GameLayer { namespace GameObjects
                virtual ObjectTypes::ObjectType ObjectType(void) const;\r
 \r
        private:\r
+               void Initialize(void);\r
+\r
                string mName;\r
+               unsigned int mLevel;\r
                unsigned long int mGold;\r
-               int mHealth;\r
-               int mMaxHealth;\r
-               int mStrength;\r
-               int mDefense;\r
+               unsigned int mHealth;\r
+               unsigned int mMaxHealth;\r
+               unsigned int mStrength;\r
+               unsigned int mDefense;\r
                string mWeaponName;\r
                string mDeathCry;\r
        };\r
index 00941e9de41ce45ffe3c90ed986f4c9753693b38..e91af69e9fe746afc5faa3115c8e7254776bb40c 100644 (file)
@@ -1,10 +1,12 @@
 #include <GameServ/DataLayer/File/FileDAOFactory.h>\r
 #include <GameServ/DataLayer/File/FilePlayerDAO.h>\r
 #include <GameServ/DataLayer/File/FileItemDAO.h>\r
+#include <GameServ/DataLayer/File/FileMonsterDAO.h>\r
 \r
 using GameServ::DataLayer::File::FileDAOFactory;\r
 using GameServ::DataLayer::File::FilePlayerDAO;\r
 using GameServ::DataLayer::File::FileItemDAO;\r
+using GameServ::DataLayer::File::FileMonsterDAO;\r
 \r
 #include <boost/smart_ptr/shared_ptr.hpp>\r
 using boost::shared_ptr;\r
@@ -27,3 +29,8 @@ shared_ptr<IItemDAO> FileDAOFactory::GetItemDAO(void) const
        return shared_ptr<IItemDAO>(new FileItemDAO());\r
 }\r
 \r
+shared_ptr<IMonsterDAO> FileDAOFactory::GetMonsterDAO(void) const\r
+{\r
+       return shared_ptr<IMonsterDAO>(new FileMonsterDAO());\r
+}\r
+\r
index fe807ee182a1abc0e712f0263bfdc7583c8871e1..5a1e099b335bb18f67b52837abf36438f2cb1bf5 100644 (file)
@@ -44,3 +44,8 @@ string FileId::GetItemNumberFromId(const string &Id)
 {\r
        return Id;\r
 }\r
+\r
+string FileId::CreateMonsterId(const unsigned int &Level, const string &Name)\r
+{\r
+       return str(format("%1%:%2%") % Level % Name);\r
+}
\ No newline at end of file
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..287a44c4865895c3a6f1cd87d5d381677cbe7e78 100644 (file)
@@ -0,0 +1,177 @@
+#include <GameServ/DataLayer/File/FileMonsterDAO.h>\r
+using GameServ::DataLayer::File::FileMonsterDAO;\r
+\r
+#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
+using GameServ::GameLayer::GameObjects::MonsterGO;\r
+\r
+#include <GameServ/DataLayer/DataLayerExceptions.h>\r
+using GameServ::DataLayer::Exceptions::ResourceException;\r
+using GameServ::DataLayer::Exceptions::DataLayerException;\r
+\r
+#include <GameServ/DataLayer/File/FileId.h>\r
+using GameServ::DataLayer::File::FileId;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+#include <boost/format.hpp>\r
+#include <boost/algorithm/string.hpp>\r
+#include <boost/lexical_cast.hpp>\r
+using boost::shared_ptr;\r
+using boost::shared_static_cast;\r
+using boost::format;\r
+using boost::str;\r
+using boost::algorithm::to_upper;\r
+using boost::algorithm::to_lower;\r
+using boost::lexical_cast;\r
+using boost::bad_lexical_cast;\r
+#include <boost/tokenizer.hpp>\r
+typedef boost::tokenizer<boost::char_separator<char> > \r
+    tokenizer;\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <fstream>\r
+using std::ifstream;\r
+using std::getline;\r
+using std::ofstream;\r
+using std::endl;\r
+\r
+#include <map>\r
+using std::map;\r
+\r
+FileMonsterDAO::FileMonsterDAO() : mFilename("data\\monsters.dat")\r
+{\r
+       Initialize(GetMonsterFilePath());\r
+}\r
+\r
+FileMonsterDAO::FileMonsterDAO(const string &filename)\r
+{\r
+       Initialize(filename);\r
+}\r
+\r
+FileMonsterDAO::~FileMonsterDAO()\r
+{\r
+}\r
+\r
+void FileMonsterDAO::Initialize(const string &filename)\r
+{\r
+       mFilename = filename;\r
+       LoadMonsterCache();\r
+}\r
+\r
+void FileMonsterDAO::LoadMonsterCache(void)\r
+{\r
+       assert(!mFilename.empty());\r
+       spMonsterCache.clear();\r
+       ifstream infile;\r
+       infile.open(mFilename.c_str());\r
+       if (infile.fail())\r
+       {\r
+               throw DataLayerException(str(format("Unable to open %1% for loading Monsters") % mFilename),\r
+                       __FILE__, __LINE__);\r
+       }\r
+       while (!infile.eof())\r
+       {\r
+               string line;\r
+               shared_ptr<MonsterGO> spMonster;\r
+               getline(infile, line);\r
+               spMonster = CreateMonsterFromLine(line);\r
+               string id = spMonster->Id();\r
+               to_lower(id);\r
+               spMonsterCache[id] = spMonster;\r
+       }\r
+       infile.close();\r
+}\r
+\r
+string FileMonsterDAO::GetMonsterFilePath() const\r
+{\r
+       return mFilename;\r
+}\r
+\r
+shared_ptr<MonsterGO> FileMonsterDAO::GetById(const string &Id) const\r
+{\r
+       map<string, shared_ptr<MonsterGO> >::const_iterator iter;\r
+       string id = Id;\r
+       to_lower(id);\r
+       iter = spMonsterCache.find(id);\r
+       if (iter != spMonsterCache.end())\r
+       {\r
+               return shared_ptr<MonsterGO>(iter->second->Clone());\r
+       }\r
+       return shared_ptr<MonsterGO>();\r
+}\r
+\r
+shared_ptr<MonsterGO> FileMonsterDAO::CreateMonsterFromLine(const string &line) const\r
+{\r
+       assert(!line.empty());\r
+       shared_ptr<MonsterGO> spMonster;\r
+       spMonster = shared_ptr<MonsterGO>(new MonsterGO());\r
+       boost::char_separator<char> sep("~", 0, boost::keep_empty_tokens);\r
+       tokenizer tokens(line, sep);\r
+       tokenizer::iterator tok_iter = tokens.begin();\r
+\r
+       try\r
+       {\r
+               spMonster->Level(lexical_cast<unsigned int>((*tok_iter)));\r
+       }\r
+       catch (bad_lexical_cast)\r
+       {\r
+               throw DataLayerException(str(format("Corrupt monster line %1%. Improperly formatted level.") %\r
+                       line), __FILE__, __LINE__);\r
+       }\r
+\r
+       tok_iter++;\r
+       if (tok_iter == tokens.end())\r
+       {\r
+               throw DataLayerException(str(format("Corrupt monster line %1%. Missing information") %\r
+                       line), __FILE__, __LINE__);\r
+       }\r
+       spMonster->Name((*tok_iter));\r
+       spMonster->Id(FileId::CreateMonsterId(spMonster->Level(), spMonster->Name()));\r
+       tok_iter++;\r
+       if (tok_iter == tokens.end())\r
+       {\r
+               throw DataLayerException(str(format("Corrupt monster line %1%. Missing information") %\r
+                       line), __FILE__, __LINE__);\r
+       }\r
+       tok_iter++;\r
+       if (tok_iter == tokens.end())\r
+       {\r
+               throw DataLayerException(str(format("Corrupt monster line %1%. Missing information") %\r
+                       line), __FILE__, __LINE__);\r
+       }\r
+       spMonster->WeaponName((*tok_iter));\r
+       tok_iter++;\r
+       if (tok_iter == tokens.end())\r
+       {\r
+               throw DataLayerException(str(format("Corrupt monster line %1%. Missing information") %\r
+                       line), __FILE__, __LINE__);\r
+       }\r
+       spMonster->DeathCry((*tok_iter));\r
+\r
+       return spMonster;\r
+}\r
+\r
+bool FileMonsterDAO::IdExists(const string &Id) const\r
+{\r
+       map<string, shared_ptr<MonsterGO> >::const_iterator iter;\r
+       string id = Id;\r
+       to_lower(id);\r
+       iter = spMonsterCache.find(id);\r
+       return (iter != spMonsterCache.end());\r
+}\r
+\r
+vector< shared_ptr<MonsterGO> > FileMonsterDAO::GetMonstersByLevel(const unsigned int &Level) const\r
+{\r
+       vector< shared_ptr<MonsterGO> > monsters(12);\r
+\r
+       map<string, shared_ptr<MonsterGO> >::const_iterator iter;\r
+       for (iter = spMonsterCache.begin(); iter != spMonsterCache.end(); iter++)\r
+       {\r
+               if (iter->second->Level() == Level)\r
+               {\r
+                       monsters.push_back(shared_ptr<MonsterGO>(iter->second->Clone()));\r
+               }\r
+       }\r
+       return monsters;\r
+}\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb6ff860de1bddfa19a2f8be73f94c788c2a4ac5 100644 (file)
@@ -0,0 +1,10 @@
+#include <GameServ/DataLayer/ILevelDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::ILevelDAO;\r
+\r
+ILevelDAO::ILevelDAO()\r
+{\r
+}\r
+\r
+ILevelDAO::~ILevelDAO()\r
+{\r
+}
\ No newline at end of file
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..758b67e9185d7aef88212d82314b97f9f5045386 100644 (file)
@@ -0,0 +1,10 @@
+#include <GameServ/DataLayer/IMasterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMasterDAO;\r
+\r
+IMasterDAO::IMasterDAO()\r
+{\r
+}\r
+\r
+IMasterDAO::~IMasterDAO()\r
+{\r
+}
\ No newline at end of file
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9736296807bf1a9c51f4fe2a08737aa80eaa9908 100644 (file)
@@ -0,0 +1,10 @@
+#include <GameServ/DataLayer/IMonsterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
+\r
+IMonsterDAO::IMonsterDAO()\r
+{\r
+}\r
+\r
+IMonsterDAO::~IMonsterDAO()\r
+{\r
+}
\ No newline at end of file
index 7f1be35035b914d27f526430e510cd49d4166b2d..2568c0f338906995c9444e1d249d745095e70687 100644 (file)
@@ -20,20 +20,11 @@ LevelGO::LevelGO(const string &Id) : GameObject(Id)
 \r
 LevelGO::~LevelGO()\r
 {\r
-       mspMonsters.clear();\r
-       mspMaster.reset();\r
 }\r
 \r
 bool LevelGO::operator ==(const LevelGO &right) const\r
 {\r
-       bool equal = (right.mspMaster == mspMaster && right.mspMonsters.size() == mspMonsters.size());\r
-       // Just because it's expensive to check an entire vector, let's split it off to be sure the\r
-       // initial comparison is true first.\r
-       if (equal)\r
-       {\r
-               return right.mspMonsters == mspMonsters;\r
-       }\r
-       return equal;\r
+       return right.mspMaster == mspMaster;\r
 }\r
 \r
 bool LevelGO::operator !=(const LevelGO &right) const\r
@@ -51,36 +42,6 @@ ObjectTypes::ObjectType LevelGO::ObjectType(void) const
        return ObjectTypes::Level;\r
 }\r
 \r
-void LevelGO::AddMonster(shared_ptr<MonsterGO> spMonster)\r
-{\r
-       vector< shared_ptr<MonsterGO> >::const_iterator iter;\r
-       iter = std::find(mspMonsters.begin(), mspMonsters.end(), spMonster);\r
-       if (iter == mspMonsters.end())\r
-       {\r
-               mspMonsters.push_back(spMonster);\r
-       }\r
-}\r
-\r
-void LevelGO::RemoveMonster(shared_ptr<MonsterGO> spMonster)\r
-{\r
-       vector< shared_ptr<MonsterGO> >::const_iterator iter;\r
-       iter = std::find(mspMonsters.begin(), mspMonsters.end(), spMonster);\r
-       if (iter != mspMonsters.end())\r
-       {\r
-               mspMonsters.erase(iter);\r
-       }\r
-}\r
-\r
-void LevelGO::Monsters(const vector< shared_ptr<MonsterGO> > &spMonsters)\r
-{\r
-       mspMonsters = spMonsters;\r
-}\r
-\r
-vector< shared_ptr<MonsterGO> > LevelGO::Monsters(void) const\r
-{\r
-       return mspMonsters;\r
-}\r
-\r
 void LevelGO::Master(shared_ptr<MasterGO> spMaster)\r
 {\r
        mspMaster = spMaster;\r
index 8df537e5489bd716061ae07fe5480e40e5b09d0a..62d5ae60f29d77df05c5502260c46dd828a59a39 100644 (file)
@@ -8,10 +8,22 @@ using std::string;
 \r
 MonsterGO::MonsterGO() : GameObject()\r
 {\r
+       Initialize();\r
 }\r
 \r
 MonsterGO::MonsterGO(const string &Id) : GameObject(Id)\r
 {\r
+       Initialize();\r
+}\r
+\r
+void MonsterGO::Initialize(void)\r
+{\r
+       mLevel = 0;\r
+       mGold = 0;\r
+       mHealth = 0;\r
+       mMaxHealth = 0;\r
+       mStrength = 0;\r
+       mDefense = 0;\r
 }\r
 \r
 MonsterGO::~MonsterGO()\r
@@ -34,54 +46,62 @@ string MonsterGO::Name(void) const
        return mName;\r
 }\r
 \r
-void MonsterGO::Strength(const int &value)\r
+void MonsterGO::Level(const unsigned int &value)\r
+{\r
+       mLevel = value;\r
+}\r
+\r
+unsigned int MonsterGO::Level(void) const\r
+{\r
+       return mLevel;\r
+}\r
+\r
+void MonsterGO::Strength(const unsigned int &value)\r
 {\r
-       assert(value > 0);\r
        mStrength = value;\r
 }\r
 \r
-int MonsterGO::Strength(void) const\r
+unsigned int MonsterGO::Strength(void) const\r
 {\r
        return mStrength;\r
 }\r
 \r
-void MonsterGO::Defense(const int &value)\r
+void MonsterGO::Defense(const unsigned int &value)\r
 {\r
-       assert(value > 0);\r
        mDefense = value;\r
 }\r
 \r
-int MonsterGO::Defense(void) const\r
+unsigned int MonsterGO::Defense(void) const\r
 {\r
        return mDefense;\r
 }\r
 \r
-void MonsterGO::Gold(const unsigned long &value)\r
+void MonsterGO::Gold(const unsigned long int &value)\r
 {\r
        mGold = value;\r
 }\r
 \r
-unsigned long MonsterGO::Gold(void) const\r
+unsigned long int MonsterGO::Gold(void) const\r
 {\r
        return mGold;\r
 }\r
 \r
-void MonsterGO::Health(const int &value)\r
+void MonsterGO::Health(const unsigned int &value)\r
 {\r
        mHealth = value;\r
 }\r
 \r
-int MonsterGO::Health(void) const\r
+unsigned int MonsterGO::Health(void) const\r
 {\r
        return mHealth;\r
 }\r
 \r
-void MonsterGO::MaxHealth(const int &value)\r
+void MonsterGO::MaxHealth(const unsigned int &value)\r
 {\r
        mMaxHealth = value;\r
 }\r
 \r
-int MonsterGO::MaxHealth(void) const\r
+unsigned int MonsterGO::MaxHealth(void) const\r
 {\r
        return mMaxHealth;\r
 }\r
@@ -110,7 +130,7 @@ string MonsterGO::DeathCry(void) const
 \r
 bool MonsterGO::operator==(const MonsterGO &right) const\r
 {\r
-       return mId == right.mId && mHealth == right.mHealth &&\r
+       return mId == right.mId && mLevel == right.mLevel && mHealth == right.mHealth &&\r
                mDefense == right.mDefense && mDeathCry == right.mDeathCry &&\r
                mGold == right.mGold && mHealth == right.mHealth && \r
                mMaxHealth == right.mMaxHealth && mName == right.mName &&\r
@@ -120,4 +140,9 @@ bool MonsterGO::operator==(const MonsterGO &right) const
 bool MonsterGO::operator!=(const MonsterGO &right) const\r
 {\r
        return (!(*this == right));\r
-}
\ No newline at end of file
+}\r
+\r
+ObjectTypes::ObjectType MonsterGO::ObjectType(void) const\r
+{\r
+       return ObjectTypes::Monster;\r
+}\r