diff --git a/BetterFont/FONTDATA b/BetterFont/FONTDATA new file mode 100644 index 0000000000000..ef7cc56449173 --- /dev/null +++ b/BetterFont/FONTDATA @@ -0,0 +1,3 @@ +Fixedsys TTF v5.00c +17 +32 \ No newline at end of file diff --git a/BetterFont/InstallReadme.txt b/BetterFont/InstallReadme.txt new file mode 100644 index 0000000000000..b0e688a2fbad8 --- /dev/null +++ b/BetterFont/InstallReadme.txt @@ -0,0 +1 @@ +Install this Font package and copy FONTDATA to your Cataclysm Data folder for a better resolution and improved font package. \ No newline at end of file diff --git a/BetterFont/fixedsys500c.zip b/BetterFont/fixedsys500c.zip new file mode 100644 index 0000000000000..ccb286a6803fe Binary files /dev/null and b/BetterFont/fixedsys500c.zip differ diff --git a/README b/README index 6b4fc24612674..f55ec908348dc 100644 --- a/README +++ b/README @@ -1,56 +1 @@ -Cataclysm is a post-apocalyptic roguelike, set in the countryside of New England -after a devastating plague of monsters and zombies. - -At present time, Cataclysm is still in early alpha, and is being developed very -rapidly. As such, there are no formal version numbers, as a new version is -released every day, often several a day. - -Source is available at the github repository, http://github.com/Whales/Cataclysm -There is also a tarball available at http://squidnet.ath.cx/cataclysm.tar.gz -Squidnet maintains a public SSH server. If you cannot play Cataclysm locally, -or if you prefer to play it in a world shared with others, connect to -cataclysm@squidnet.ath.cx (there is no password). - -Compiling Cataclysm under linux is straightforward, and only requires the -ncurses development libraries. Under Ubuntu, these libraries can be found in -the libncurses5-dev package ("sudo apt-get install libncurses5-dev" will install -this package). - -Cataclysm is very different from most roguelikes in many ways. Rather than -being set in a vertical, linear dungeon, it is set in an unbounded, 3D world. -This means that exploration plays a much bigger role than in most roguelikes, -and the game is much less linear. -Because the map is so huge, it is actually completely persistant between games. -If you die, and start a new character, your new game will be set in the same -game world as your last. Like in many roguelikes, you will be able to loot the -dead bodies of previous characters; unlike most roguelikes, you will also be -able to retrace their steps completely, and any dramatic changes made to the -world will persist into your next game. -While this makes for interesting depth of play, and the ability to "save" game -progress even after death, some prefer to start each game with a freshly -generated world. This can be achieved by erasing the contents of the save -directory, found in the same folder as the executable. "rm save/*" will erase -these files for you. - -Cataclysm's gameplay also includes many unique quirks, and the learning curve is -somewhat steep, even for those experienced with roguelikes. Included with the -game is a tutorial which runs the player through most of the key features. The -game also has extensive documentation via the ? command. Pressing ?1 will list -all the key commands, which is a good place to start. - -To submit a bug, complaint, feature request, or praise, please send them via -email to fivedozenwhales@gmail.com. You can also submit problem reports and -patches at the github repository at http://github.com/Whales/Cataclysm . - -I strive to include as many feature requests as possible, and if you submit one -there is a good chance that it will appear in the game within a few days. Of -course, it is inevitable that I will reject some feature requests, either -because they do not fit my conception of the game, or because they require more -code than I think they're worth. Feature requests supplied in the form of a -patch stand a better chance of inclusion, of course ;) For instructions on -making changes to item types, monster types, etc., please see the EDITING file. -Most changes of this variety require no training in C++, or programming in -general. - -If you want to take Cataclysm in a new direction, please feel free to create a -branch project--just let me know about it! +Cataclysm Classic Zombie Survival diff --git a/README.md b/README.md index d6ccb41b72033..2a4fd1c28c20d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -Cataclysm Mod -============ -Yet Another Darkling Wolf Cataclysm Mod (YADWCM) +Cataclysm Classic Zombie -This is the github for my constantly updating, frequently buggy, Cataclysm Mod. -Pull requests for new features or bugfixes are welcome, although I'm probably more likely to notice if you poke me on the forum or via email. -To make suggestions or post bug reports, check out my thread over on the Cataclysm forums at: http://whalesdev.com/forums/index.php?topic=1389.0 +Started off Jan 20th 2013 Cataclysm DDA build. diff --git a/catacurse.h b/catacurse.h index b35268c09ce7c..672e9a2f8b25a 100644 --- a/catacurse.h +++ b/catacurse.h @@ -13,8 +13,8 @@ typedef unsigned int u_int32_t; #define __NORMAL 0x00000000 /* Added characters are normal. */ //<---------not used #define __STANDOUT 0x00000100 /* Added characters are standout. */ //<---------not used #define __UNDERSCORE 0x00000200 /* Added characters are underscored. */ //<---------not used -#define __REVERSE 0x00000400 /* Added characters are reverse //<---------not used - video. */ +#define __REVERSE 0x00000400 /* Added characters are reverse video. */ //<---------not used + #define __BLINK 0x00000800 /* Added characters are blinking. */ #define __DIM 0x00001000 /* Added characters are dim. */ //<---------not used #define __BOLD 0x00002000 /* Added characters are bold. */ diff --git a/data/motd b/data/motd index 69ced9300a28d..aaa990003a4fe 100644 --- a/data/motd +++ b/data/motd @@ -2,16 +2,10 @@ # Max length of a line is 64 characters; the following line is for reference ################################################################ This branch contains much work by Creidieki, Uzername, -Kevingranade, HerbertJones, Gim, Shades and Origamiwolf. +Kevingranade, HerbertJones, Gim, Shades,Origamiwolf +and Darkling WOlf, and Kevingranade The game now has configurable options. You can directly edit options.txt in the data directory, or you -can edit the options via the help menu. -For latest discussions on Cataclysm and its mods, please visit: -http://www.cataclysm.glyphgryph.com/smf/index.php -Check out the options listing by pressing ?2 - -As always, please visit the forums at: -http://www.cataclysm.glyphgryph.com/smf/index.php diff --git a/disease.h b/disease.h index 367610acf21a0..a6c6d2f12185e 100644 --- a/disease.h +++ b/disease.h @@ -487,7 +487,17 @@ void dis_effect(game *g, player &p, disease &dis) if (!p.has_trait(PF_POISRESIST)) p.str_cur -= 2; break; - + + case DI_BLEED: //Oddzball-Bleeding took out chance for now... + if (!p.is_npc() && one_in(2)) { + g->add_msg("You lose some blood."); + p.pain++; + p.hurt(g, bp_torso, 0, 1); + p.per_cur--; + p.str_cur --; + } + break; + case DI_BADPOISON: if ((!p.has_trait(PF_POISRESIST) && one_in(100)) || ( p.has_trait(PF_POISRESIST) && one_in(500)) ) { @@ -910,6 +920,7 @@ std::string dis_name(disease dis) case DI_STUNNED: return "Stunned"; case DI_DOWNED: return "Downed"; case DI_POISON: return "Poisoned"; + case DI_BLEED: return "Bleeding"; case DI_BADPOISON: return "Badly Poisoned"; case DI_FOODPOISON: return "Food Poisoning"; case DI_SHAKES: return "Shakes"; @@ -1085,6 +1096,9 @@ You're knocked to the ground. You have to get up before you can move."; Perception - 1; Dexterity - 1; Strength - 2 IF not resistant\n\ Occasional pain and/or damage."; + case DI_BLEED: return "\ + You are slowly losing blood."; //Oddzball-Bleeding Description + case DI_BADPOISON: return "\ Perception - 2; Dexterity - 2;\n\ Strength - 3 IF not resistant, -1 otherwise\n\ diff --git a/game.cpp b/game.cpp index 872a806176b3d..87fe3d785820a 100644 --- a/game.cpp +++ b/game.cpp @@ -155,9 +155,8 @@ bool game::opening_screen() erase(); for (int i = 0; i < 80; i++) mvwputch(w_open, 21, i, c_white, LINE_OXOX); - mvwprintz(w_open, 0, 0, c_blue, "Welcome to The Darkling Wolf's Modded Cataclysm!"); - mvwprintz(w_open, 1, 0, c_red, "\ -Please report bugs to TheDarklingWolf@gmail.com or post on the forums."); + mvwprintz(w_open, 0, 0, c_blue, "Cataclysm Classic Zombie"); //Oddzball + mvwprintz(w_open, 1, 0, c_red, "Build3-2"); //Oddzball refresh(); wrefresh(w_open); refresh(); @@ -518,6 +517,7 @@ void game::start_game() // Put some NPCs in there! create_starting_npcs(); MAPBUFFER.set_dirty(); + } void game::create_factions() @@ -708,9 +708,10 @@ void game::rustCheck() { if (skillLevel > 0 && turn % (8192 / int(pow(2, double(forgetCap - 1)))) == 0) { if (rng(1,12) % (u.has_trait(PF_FORGETFUL) ? 3 : 4)) { - if (u.has_bionic(bio_memory) && u.power_level > 0) { + + if (u.has_bionic(bio_memory) && u.power_level > 0) { if (one_in(5)) - u.power_level--; + u.power_level--; } else { if (OPTIONS[OPT_SKILL_RUST] == 0 || u.skillLevel(*aSkill).exercise() > 0) { int newLevel; @@ -718,12 +719,12 @@ void game::rustCheck() { if (newLevel < skillLevel) { add_msg("Your skill in %s has reduced to %d!", (*aSkill)->name().c_str(), newLevel); - } + } } } - } - } } + } + } } void game::process_events() @@ -1622,7 +1623,7 @@ void game::update_scent() //Greatly reduce scent for bashable barriers grscent[x][y] = newscent[x][y] / 4; else - grscent[x][y] = newscent[x][y]; + grscent[x][y] = newscent[x][y]; } if (!u.has_active_bionic(bio_scent_mask)) grscent[u.posx][u.posy] = u.scent; @@ -1783,10 +1784,8 @@ void game::load(std::string name) turn = tmpturn; nextspawn = tmpspawn; nextweather = tmpnextweather; - cur_om = overmap(this, comx, comy, levz); m.load(this, levx, levy); - run_mode = tmprun; if (OPTIONS[OPT_SAFEMODE] && run_mode == 0) run_mode = 1; @@ -3360,7 +3359,7 @@ void game::monmove() void game::sound(int x, int y, int vol, std::string description) { - vol *= 1.5; // Scale it a little + vol *= 1; // Scale it a little //Oddzball-Why did everything have same sound sense as Canine Ears? Bug? Changed to 1 // First, alert all monsters (that can hear) to the sound for (int i = 0; i < z.size(); i++) { if (z[i].can_hear()) { @@ -6065,7 +6064,7 @@ void game::complete_butcher(int index) if(corpse->has_flag(MF_HUMAN)) meat = itypes[itm_human_flesh]; else - meat = itypes[itm_meat]; + meat = itypes[itm_meat]; else meat = itypes[itm_veggy]; } @@ -6579,7 +6578,7 @@ void game::plmove(int x, int y) if (u.has_trait(PF_LIGHTSTEP)) sound(x, y, 2, ""); // Sound of footsteps may awaken nearby monsters else - sound(x, y, 6, ""); // Sound of footsteps may awaken nearby monsters + sound(x, y, 4, ""); // Sound of footsteps may awaken nearby monsters //Oddzball-Made Footsteps slightly less loud, we arent a damn elephant. } if (one_in(20) && u.has_artifact_with(AEP_MOVEMENT_NOISE)) sound(x, y, 40, "You emit a rattling sound."); diff --git a/itype.h b/itype.h index ee5c2a1b8d2d2..ab18c36bdd78f 100644 --- a/itype.h +++ b/itype.h @@ -28,7 +28,7 @@ enum item_cat IC_GUN, IC_BOOK, IC_TOOL, - IC_CONTAINER + IC_CONTAINER }; enum itype_id { @@ -65,7 +65,7 @@ itm_bandages, itm_1st_aid, itm_vitamins, itm_aspirin, itm_caffeine, itm_prozac, itm_cig, itm_weed, itm_coke, itm_meth, itm_heroin, itm_cigar, itm_antibiotics, itm_poppy_sleep, itm_poppy_pain, itm_crack, /*itm_grack,*/ // Do-nothing / Melee weapons -itm_wrapper, itm_syringe, itm_rag, itm_fur, itm_leather, itm_superglue, +itm_wrapper, itm_syringe, itm_fur, itm_leather, itm_superglue, itm_id_science, itm_id_military, itm_electrohack, itm_string_6, itm_string_36, itm_rope_6, itm_rope_30, itm_chain, itm_processor, itm_RAM, itm_power_supply, itm_amplifier, itm_transponder, itm_receiver, itm_antenna, itm_steel_chunk, @@ -83,8 +83,8 @@ itm_wrapper, itm_syringe, itm_rag, itm_fur, itm_leather, itm_superglue, itm_splinter, itm_skewer, itm_crackpipe, itm_torch_done, itm_spring, itm_lawnmower, itm_lawnmower_blade, itm_lawnmower_machete, itm_lawnmower_halberd, itm_curtain, itm_broketent, itm_element, - itm_television, itm_pilot_light, itm_toaster, itm_microwave, itm_laptop, - itm_fan, itm_ceramic_plate, itm_ceramic_bowl, itm_ceramic_cup, + itm_television, itm_pilot_light, itm_toaster, itm_microwave, itm_laptop, + itm_fan, itm_ceramic_plate, itm_ceramic_bowl, itm_ceramic_cup, itm_glass_plate, itm_glass_bowl, itm_glass, itm_tin_plate, itm_fork, itm_spork, // Vehicle parts @@ -129,11 +129,11 @@ itm_hat_ball, itm_hat_boonie, itm_hat_cotton, itm_hat_knit, itm_hat_hunting, itm_helmet_army, itm_helmet_riot, itm_helmet_motor, itm_helmet_chitin, itm_helmet_plate, itm_tophat, // High-storage -itm_backpack, itm_purse, itm_mbag, itm_fanny, itm_holster, itm_bootstrap, +itm_backpack, itm_rucksack, itm_purse, itm_mbag, itm_fanny, itm_holster, itm_bootstrap, //Oddzball-Added Rucksack // Decorative itm_ring, itm_necklace, // Ammunition - itm_battery, itm_thread, itm_duct_tape, itm_cable, itm_plut_cell, + itm_battery, itm_thread, itm_duct_tape, itm_cable, itm_plut_cell, itm_nail, itm_bb, itm_arrow_wood, itm_arrow_cf, itm_bolt_wood, itm_bolt_steel, itm_shot_bird, itm_shot_00, itm_shot_slug, itm_shot_he, itm_22_lr, itm_22_cb, itm_22_ratshot, itm_9mm, itm_9mmP, @@ -145,9 +145,9 @@ itm_ring, itm_necklace, itm_40mm_teargas, itm_40mm_smoke, itm_40mm_flashbang, itm_12mm, itm_plasma, itm_charge_shot, itm_shot_hull, - itm_9mm_casing, itm_38_casing, itm_40_casing, itm_44_casing, itm_45_casing, + itm_9mm_casing, itm_38_casing, itm_40_casing, itm_44_casing, itm_45_casing, itm_57mm_casing, itm_46mm_casing, itm_762_casing, itm_223_casing, - itm_3006_casing, itm_308_casing, itm_40mm_casing, itm_gunpowder, + itm_3006_casing, itm_308_casing, itm_40mm_casing, itm_gunpowder, itm_shotgun_primer, itm_smpistol_primer, itm_lgpistol_primer, itm_smrifle_primer, itm_lgrifle_primer, itm_lead, itm_incendiary, itm_gasoline, // Guns @@ -172,7 +172,7 @@ itm_silencer, itm_grip, itm_barrel_big, itm_barrel_small, itm_barrel_rifled, itm_m203, itm_bayonet, itm_u_shotgun, itm_gun_crossbow, // Books itm_mag_porn, itm_mag_tv, itm_mag_news, itm_mag_cars, itm_mag_cooking, - itm_mag_carpentry, + itm_mag_carpentry, itm_mag_guns, itm_novel_romance, itm_novel_spy, itm_novel_scifi, itm_novel_drama, itm_manual_brawl, itm_manual_knives, itm_manual_mechanics, itm_manual_survival, itm_manual_speech, itm_manual_business, itm_manual_first_aid, @@ -203,7 +203,7 @@ itm_lighter, itm_sewing_kit, itm_scissors, itm_hammer, itm_extinguisher, itm_knife_butcher, itm_knife_combat, itm_saw, itm_ax, itm_hacksaw, itm_tent_kit, itm_torch, itm_torch_lit, itm_candle, itm_candle_lit, itm_brazier, itm_puller, itm_press, itm_screwdriver, itm_wrench, - itm_boltcutters, itm_mop, itm_picklocks, itm_pickaxe, + itm_boltcutters, itm_mop, itm_picklocks, itm_pickaxe, itm_rag, //Oddzball-Added rag to tools // Bionics containers itm_bionics_battery, itm_bionics_power, itm_bionics_tools, itm_bionics_neuro, itm_bionics_sensory, itm_bionics_aquatic, @@ -462,11 +462,11 @@ struct it_comest : public itype virtual bool is_food() { return true; } // virtual bool count_by_charges() { return charges >= 1 ; } - virtual bool count_by_charges() - { + virtual bool count_by_charges() + { if (m1 == LIQUID) return true; else - return charges > 1 ; + return charges > 1 ; } diff --git a/itypedef.cpp b/itypedef.cpp index 0ae87764e3e63..3a265b473fe13 100644 --- a/itypedef.cpp +++ b/itypedef.cpp @@ -656,10 +656,10 @@ MELEE("syringe", 8, 25, ',', c_ltcyan, PLASTIC,MNULL, 1, 0, -4, 6, -2, mfb(IF_SPEAR), "\ A medical syringe. Used for administering heroin and other drugs."); -MELEE("rag", 72, 10, ';', c_dkgray, COTTON, MNULL, +/*MELEE("rag", 72, 10, ';', c_dkgray, COTTON, MNULL, //Oddzball-How do we make you a tool? 1, 1,-10, 0, 0, 0, "\ A small piece of cloth. Useful for making molotov cocktails and not much else." -); +);*/ MELEE("fur pelt", 0, 10, ',', c_brown, WOOL, FLESH, 1, 1, -8, 0, 0, 0, "\ @@ -1117,64 +1117,64 @@ MELEE("pilot light", 20, 10, ',', c_cyan, IRON, PLASTIC, 0, 1, 0, 0, 0, 0, "\ A pilot light from a gas-burning device, this particular one\n\ is a simple piezo electric igniter."); - -MELEE("toaster", 50, 10, ',', c_cyan, IRON, PLASTIC, - 2, 1, 0, 0, 0, 0, "\ -A small two slice toaster, not much use as anything but spare parts"); - -MELEE("microwave", 50, 10, ',', c_cyan, IRON, PLASTIC, - 8, 5, 0, 0, 0, 0, "\ -A home microwave, has probably seen its share of baked beans.\n\ -Good for scrap parts."); - -MELEE("laptop computer", 50, 10, ',', c_cyan, IRON, PLASTIC, - 3, 2, 0, 0, 0, 0, "\ -A broken laptop, basically a paperweight now"); - -MELEE("desk fan", 50, 10, ',', c_cyan, IRON, PLASTIC, - 4, 1, 0, 0, 0, 0, "\ -A small fan, used to propel air around a room."); - -MELEE("ceramic plate", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A ceramic dinner plate, you could probably play frisbee with it"); - -MELEE("ceramic bowl", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A shallow dessert bowl, not a lot of use for it really."); - -MELEE("ceramic cup", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A ceramic teacup, pinky out!"); - -MELEE("glass plate", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A glass dinner plate, you could probably play frisbee with it"); - -MELEE("glass bowl", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A glass dessert bowl, not a lot of use for it really."); - -MELEE("glass", 50, 10, ',', c_cyan, GLASS, MNULL, - 1, 1, 1, 0, 0, 0, "\ -A tall glass, just begging for a frosty one!"); - -MELEE("tin plate", 50, 10, ',', c_cyan, STEEL, MNULL, - 1, 0, 0, 0, 0, 0, "\ -A tin dinner plate, you could probably play frisbee with it"); - -// NAME RAR PRC SYM COLOR MAT1 MAT2 -MELEE("fork", 90, 15,';', c_ltcyan, STEEL, MNULL, -// VOL WGT DAM CUT HIT FLAGS - 1, 2, 2, 1, -2, 0, "\ -A fork, if you stab something with it you eat it right away\n\ -Wait.. nevermind."); - -// NAME RAR PRC SYM COLOR MAT1 MAT2 -MELEE("spork", 90, 15,';', c_ltcyan, STEEL, MNULL, -// VOL WGT DAM CUT HIT FLAGS - 1, 2, 2, 1, -2, 0, "\ -Foons are for scrubs, real men use sporks."); + +MELEE("toaster", 50, 10, ',', c_cyan, IRON, PLASTIC, + 2, 1, 0, 0, 0, 0, "\ +A small two slice toaster, not much use as anything but spare parts"); + +MELEE("microwave", 50, 10, ',', c_cyan, IRON, PLASTIC, + 8, 5, 0, 0, 0, 0, "\ +A home microwave, has probably seen its share of baked beans.\n\ +Good for scrap parts."); + +MELEE("laptop computer", 50, 10, ',', c_cyan, IRON, PLASTIC, + 3, 2, 0, 0, 0, 0, "\ +A broken laptop, basically a paperweight now"); + +MELEE("desk fan", 50, 10, ',', c_cyan, IRON, PLASTIC, + 4, 1, 0, 0, 0, 0, "\ +A small fan, used to propel air around a room."); + +MELEE("ceramic plate", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A ceramic dinner plate, you could probably play frisbee with it"); + +MELEE("ceramic bowl", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A shallow dessert bowl, not a lot of use for it really."); + +MELEE("ceramic cup", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A ceramic teacup, pinky out!"); + +MELEE("glass plate", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A glass dinner plate, you could probably play frisbee with it"); + +MELEE("glass bowl", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A glass dessert bowl, not a lot of use for it really."); + +MELEE("glass", 50, 10, ',', c_cyan, GLASS, MNULL, + 1, 1, 1, 0, 0, 0, "\ +A tall glass, just begging for a frosty one!"); + +MELEE("tin plate", 50, 10, ',', c_cyan, STEEL, MNULL, + 1, 0, 0, 0, 0, 0, "\ +A tin dinner plate, you could probably play frisbee with it"); + +// NAME RAR PRC SYM COLOR MAT1 MAT2 +MELEE("fork", 90, 15,';', c_ltcyan, STEEL, MNULL, +// VOL WGT DAM CUT HIT FLAGS + 1, 2, 2, 1, -2, 0, "\ +A fork, if you stab something with it you eat it right away\n\ +Wait.. nevermind."); + +// NAME RAR PRC SYM COLOR MAT1 MAT2 +MELEE("spork", 90, 15,';', c_ltcyan, STEEL, MNULL, +// VOL WGT DAM CUT HIT FLAGS + 1, 2, 2, 1, -2, 0, "\ +Foons are for scrubs, real men use sporks."); // NAME RAR PRC SYM COLOR MAT1 MAT2 MELEE("steel frame", 25, 35, ']', c_cyan, STEEL, MNULL, @@ -1853,13 +1853,17 @@ The only hat for a gentleman. Look exquisite while laughing in the face\n\ of danger!"); ARMOR("backpack", 38, 210,C_STORE, PLASTIC, MNULL, - 14, 2, -4, 0, 2, 0, 0, 0, 0, 80, mfb(bp_torso), "\ -Provides more storage than any other piece of clothing."); + 10, 2, -4, 0, 1, 0, 0, 0, 0, 40, mfb(bp_torso), "\ +A small backpack, good storage for a little encumbrance ."); + +ARMOR("military rucksack", 20, 210,C_STORE, PLASTIC, MNULL, //Oddzball-Added Rucksack + 14, 3, -4, 0, 2, 0, 0, 0, 0, 80, mfb(bp_torso), "\ +A huge military rucksack, provides a lot of storage."); // NAME RAR PRC COLOR MAT1 MAT2 ARMOR("purse", 40, 75,C_STORE, LEATHER, MNULL, // VOL WGT DAM HIT ENC RES CUT ENV WRM STO COVERS - 10, 3, 2, 2, 2, 0, 0, 0, 0, 20, mfb(bp_torso), "\ + 10, 3, 2, 2, 1, 0, 0, 0, 0, 20, mfb(bp_torso), "\ A bit encumbersome to wear, but provides lots of storage."); ARMOR("messenger bag", 20, 110,C_STORE, PLASTIC, MNULL, @@ -3928,6 +3932,10 @@ TOOL("pickaxe", 60, 160,'/', c_ltred, WOOD, MNULL, 12, 11, 12, 0, -1, 0, 0, 0, 0, AT_NULL, itm_null, &iuse::pickaxe, 0, "\ A large steel pickaxe, strike the earth!"); +TOOL("rag", 1, 0, ',', c_white, COTTON, MNULL, //Oddzball-Made rag a tool + 0, 0, 0, 0, 0, 0, 0, 0, 0, AT_NULL, itm_null, &iuse::rag, 0, "\ +Rag, useful in crafting and possibly stopping bleeding"); + // BIONICS // These are the modules used to install new bionics in the player. They're // very simple and straightforward; a difficulty, followed by a NULL-terminated diff --git a/iuse.cpp b/iuse.cpp index e4ca78260adba..e9324efd5d636 100644 --- a/iuse.cpp +++ b/iuse.cpp @@ -75,7 +75,7 @@ void iuse::royal_jelly(game *g, player *p, item *it, bool t) g->add_msg_if_player(p,message.c_str()); } -void iuse::bandage(game *g, player *p, item *it, bool t) +void iuse::bandage(game *g, player *p, item *it, bool t) { int bonus = p->skillLevel("firstaid").level(); hp_part healed; @@ -93,9 +93,11 @@ void iuse::bandage(game *g, player *p, item *it, bool t) healed = hp_part(i); } } - } else { // Player--present a menu - - WINDOW* w = newwin(10, 20, 8, 1); + } + + else { // Player--present a menu + + WINDOW* w = newwin(15, 20, 9, 1); wborder(w, LINE_XOXO, LINE_XOXO, LINE_OXOX, LINE_OXOX, LINE_OXXO, LINE_OOXX, LINE_XXOO, LINE_XOOX ); mvwprintz(w, 1, 1, c_ltred, "Bandage where?"); @@ -105,7 +107,8 @@ void iuse::bandage(game *g, player *p, item *it, bool t) mvwprintz(w, 5, 1, c_ltgray, "4: Right Arm"); mvwprintz(w, 6, 1, c_ltgray, "5: Left Leg"); mvwprintz(w, 7, 1, c_ltgray, "6: Right Leg"); - mvwprintz(w, 8, 1, c_ltgray, "7: Exit"); + mvwprintz(w, 8, 1, c_ltgray, "7: Stop Bleeding"); + mvwprintz(w, 9, 1, c_ltgray, "8: Exit"); nc_color col; int curhp; for (int i = 0; i < num_hp_parts; i++) { @@ -179,12 +182,17 @@ void iuse::bandage(game *g, player *p, item *it, bool t) return; } else healed = hp_leg_r; + } else if (ch == '8') { + g->add_msg_if_player(p,"Never mind."); + add_or_drop_item(g, p, it); + return; + } else if (ch == '7') { - g->add_msg_if_player(p,"Never mind."); - add_or_drop_item(g, p, it); + g->add_msg_if_player(p,"You stopped the bleeding."); + p->rem_disease(DI_BLEED); return; } - } while (ch < '1' || ch > '7'); + } while (ch < '1' || ch > '8'); //Oddzball use bandage to fix bleeding Character 8 werase(w); wrefresh(w); delwin(w); @@ -202,7 +210,7 @@ void iuse::bandage(game *g, player *p, item *it, bool t) p->heal(healed, dam); } -void iuse::firstaid(game *g, player *p, item *it, bool t) +void iuse::firstaid(game *g, player *p, item *it, bool t) { int bonus = p->skillLevel("firstaid").level(); hp_part healed; @@ -221,7 +229,7 @@ void iuse::firstaid(game *g, player *p, item *it, bool t) } } } else { // Player--present a menu - + WINDOW* w = newwin(10, 20, 8, 1); wborder(w, LINE_XOXO, LINE_XOXO, LINE_OXOX, LINE_OXOX, LINE_OXXO, LINE_OOXX, LINE_XXOO, LINE_XOOX ); @@ -665,8 +673,8 @@ void iuse::dogfood(game *g, player *p, item *it, bool t) g->add_msg_if_player(p,"You spill the dogfood all over the ground."); } - - + + // TOOLS below this point! @@ -980,7 +988,7 @@ void iuse::hammer(game *g, player *p, item *it, bool t) g->m.add_item(p->posx, p->posy, g->itypes[itm_2x4], 0, boards); g->m.ter(dirx, diry) = newter; } - + void iuse::light_off(game *g, player *p, item *it, bool t) { if (it->charges == 0) @@ -992,7 +1000,7 @@ void iuse::light_off(game *g, player *p, item *it, bool t) it->charges --; } } - + void iuse::light_on(game *g, player *p, item *it, bool t) { if (t) { // Normal use @@ -1106,7 +1114,7 @@ void iuse::two_way_radio(game *g, player *p, item *it, bool t) delwin(w); refresh(); } - + void iuse::radio_off(game *g, player *p, item *it, bool t) { if (it->charges == 0) @@ -1174,34 +1182,34 @@ void iuse::picklock(game *g, player *p, item *it, bool t) if (dirx == -2) { g->add_msg_if_player(p,"Invalid direction."); return; - } -else if (dirx == 0 && diry == 0) { - g->add_msg_if_player(p, "You pick your nose and your sinuses swing open."); - return; + } +else if (dirx == 0 && diry == 0) { + g->add_msg_if_player(p, "You pick your nose and your sinuses swing open."); + return; } dirx += p->posx; diry += p->posy; - ter_id type = g->m.ter(dirx, diry); - int npcdex = g->npc_at(dirx, diry); - if (npcdex != -1) { - g->add_msg_if_player(p, "You can pick your friends, and you can"); - g->add_msg_if_player(p, "pick your nose, but you can't pick"); - g->add_msg_if_player(p, "your friend's nose"); - return; - } - if (type == t_chaingate_l) { + ter_id type = g->m.ter(dirx, diry); + int npcdex = g->npc_at(dirx, diry); + if (npcdex != -1) { + g->add_msg_if_player(p, "You can pick your friends, and you can"); + g->add_msg_if_player(p, "pick your nose, but you can't pick"); + g->add_msg_if_player(p, "your friend's nose"); + return; + } + if (type == t_chaingate_l) { if (dice(4, 6) < dice(4, p->dex_cur)) { g->add_msg_if_player(p,"You pick the lock and the gate swings open."); p->moves -= (400 - (p->dex_cur * 5)); - g->m.ter(dirx, diry) = t_chaingate_o; - return; - } + g->m.ter(dirx, diry) = t_chaingate_o; + return; + } } if (type == t_door_locked || type == t_door_locked_alarm) { if (dice(4, 6) < dice(4, p->dex_cur)) { g->add_msg_if_player(p,"You pick the lock and the door swings open."); p->moves -= (400 - (p->dex_cur * 5)); - g->m.ter(dirx, diry) = t_door_o; + g->m.ter(dirx, diry) = t_door_o; return; } } else { @@ -1250,7 +1258,7 @@ void iuse::crowbar(game *g, player *p, item *it, bool t) } else { g->add_msg_if_player(p,"You pry, but cannot open the crate."); p->moves -= 100; - } + } } else { int nails = 0, boards = 0; ter_id newter; @@ -1362,7 +1370,7 @@ void iuse::jackhammer(game *g, player *p, item *it, bool t) g->m.destroy(g, dirx, diry, false); p->moves -= 500; g->sound(dirx, diry, 45, "TATATATATATATAT!"); - } else if (g->m.move_cost(dirx, diry) == 2 && g->levz != -1 && + } else if (g->m.move_cost(dirx, diry) == 2 && g->levz != -1 && g->m.ter(dirx, diry) != t_dirt && g->m.ter(dirx, diry) != t_grass) { g->m.destroy(g, dirx, diry, false); p->moves -= 500; @@ -1390,7 +1398,7 @@ void iuse::jacqueshammer(game *g, player *p, item *it, bool t) g->m.destroy(g, dirx, diry, false); p->moves -= 500; g->sound(dirx, diry, 45, "OHOHOHOHOHOHOHOHO!"); - } else if (g->m.move_cost(dirx, diry) == 2 && g->levz != -1 && + } else if (g->m.move_cost(dirx, diry) == 2 && g->levz != -1 && g->m.ter(dirx, diry) != t_dirt && g->m.ter(dirx, diry) != t_grass) { g->m.destroy(g, dirx, diry, false); p->moves -= 500; @@ -1430,6 +1438,7 @@ void iuse::pickaxe(game *g, player *p, item *it, bool t) g->add_msg_if_player(p,"just expect them to work! Now put the pickaxe"); g->add_msg_if_player(p,"down and go play the game."); } + void iuse::set_trap(game *g, player *p, item *it, bool t) { int dirx, diry; @@ -1484,7 +1493,7 @@ void iuse::set_trap(game *g, player *p, item *it, bool t) query_yn("Bury the beartrap?")); type = (buried ? tr_beartrap_buried : tr_beartrap); message << "You " << (buried ? "bury" : "set") << " the beartrap."; - practice = (buried ? 7 : 4); + practice = (buried ? 7 : 4); break; case itm_board_trap: message << "You set the board trap on the " << g->m.tername(posx, posy) << @@ -1702,7 +1711,7 @@ void iuse::pipebomb_act(game *g, player *p, item *it, bool t) g->explosion(pos.x, pos.y, rng(6, 14), rng(0, 4), false); } } - + void iuse::grenade(game *g, player *p, item *it, bool t) { g->add_msg_if_player(p,"You pull the pin on the grenade."); @@ -1880,7 +1889,7 @@ void iuse::acidbomb(game *g, player *p, item *it, bool t) it->bday = int(g->turn); it->active = true; } - + void iuse::acidbomb_act(game *g, player *p, item *it, bool t) { if (!p->has_item(it)) { @@ -1909,7 +1918,7 @@ void iuse::molotov(game *g, player *p, item *it, bool t) it->bday = int(g->turn); it->active = true; } - + void iuse::molotov_lit(game *g, player *p, item *it, bool t) { int age = int(g->turn) - it->bday; @@ -2015,7 +2024,7 @@ void iuse::pheromone(game *g, player *p, item *it, bool t) g->add_msg("...and several nearby zombies turn friendly!"); } } - + void iuse::portal(game *g, player *p, item *it, bool t) { @@ -2086,7 +2095,7 @@ void iuse::UPS_off(game *g, player *p, item *it, bool t) it->active = true; } } - + void iuse::UPS_on(game *g, player *p, item *it, bool t) { if (t) { // Normal use @@ -2140,7 +2149,7 @@ void iuse::tazer(game *g, player *p, item *it, bool t) g->kill_mon(mondex, (p == &(g->u))); return; } - + if (npcdex != -1) { npc *foe = dynamic_cast(&g->active_npc[npcdex]); if (foe->attitude != NPCATT_FLEE) @@ -2283,7 +2292,7 @@ void iuse::vacutainer(game *g, player *p, item *it, bool t) it->put_in(blood); } - + void iuse::knife(game *g, player *p, item *it, bool t) { int ch = menu( @@ -2307,9 +2316,9 @@ void iuse::vacutainer(game *g, player *p, item *it, bool t) bool is_string = cut->type->id == itm_string_36; int num_pieces = is_string ? 6 : 5; p->moves -= is_string ? 150 : 300; - g->add_msg("You cut the %s into %d smaller pieces.", is_string + g->add_msg("You cut the %s into %d smaller pieces.", is_string ? "string" : "rope", num_pieces); - item string(g->itypes[is_string ?itm_string_6 : itm_rope_6], + item string(g->itypes[is_string ?itm_string_6 : itm_rope_6], int(g->turn), g->nextinv); p->i_rem(ch); bool drop = false; @@ -2550,7 +2559,7 @@ void iuse::hacksaw(game *g, player *p, item *it, bool t) g->m.ter(dirx, diry) = t_sewage; p->moves -= 1000; g->sound(dirx, diry, 15,"grnd grnd grnd"); - g->m.add_item(p->posx, p->posy, g->itypes[itm_pipe], 0, 3); + g->m.add_item(p->posx, p->posy, g->itypes[itm_pipe], 0, 3); } else if (g->m.ter(dirx, diry) == t_bars && g->m.ter(p->posx, p->posy)) { g->m.ter(dirx, diry) = t_floor; p->moves -= 500; @@ -2577,7 +2586,7 @@ void iuse::tent(game *g, player *p, item *it, bool t) posy += diry; for (int i = -1; i <= 1; i++) for (int j = -1; j <= 1; j++) - if (!g->m.has_flag(tentable, posx + i, posy + j)) { + if (!g->m.has_flag(tentable, posx + i, posy + j)) { g->add_msg("You need a 3x3 diggable space to place a tent"); return; } @@ -2591,7 +2600,7 @@ void iuse::tent(game *g, player *p, item *it, bool t) void iuse::torch(game *g, player *p, item *it, bool t) { - if (!p->has_charges(itm_lighter, 1)) + if (!p->has_charges(itm_lighter, 1)) g->add_msg_if_player(p,"You need a lighter or fire to light this."); else { p->use_charges(itm_lighter, 1); @@ -2600,7 +2609,7 @@ else { it->active = true; } } - + void iuse::torch_lit(game *g, player *p, item *it, bool t) { if (t) { // Normal use @@ -2616,7 +2625,7 @@ void iuse::torch_lit(game *g, player *p, item *it, bool t) void iuse::candle(game *g, player *p, item *it, bool t) { - if (!p->has_charges(itm_lighter, 1)) + if (!p->has_charges(itm_lighter, 1)) g->add_msg_if_player(p,"You need a lighter to light this."); else { p->use_charges(itm_lighter, 1); @@ -2625,7 +2634,7 @@ else { it->active = true; } } - + void iuse::candle_lit(game *g, player *p, item *it, bool t) { if (t) { // Normal use @@ -2917,8 +2926,8 @@ void iuse::boltcutters(game *g, player *p, item *it, bool t) } else { g->add_msg("You can't cut that."); } -} - +} + void iuse::mop(game *g, player *p, item *it, bool t) { int dirx, diry; @@ -2939,8 +2948,26 @@ void iuse::mop(game *g, player *p, item *it, bool t) g->add_msg_if_player(p,"There's nothing to mop there."); } } +void iuse::rag(game *g, player *p, item *it, bool t) //Oddzball-Use rags to possibly stop bleeding. +{ +if (p->has_disease(DI_BLEED)){ + if (one_in(2)){ + g->add_msg_if_player(p,"You managed to stop the bleeding."); + p->rem_disease(DI_BLEED); + p->use_charges(itm_rag, 1); + } +else { + g->add_msg_if_player(p,"You couldnt stop the bleeding."); + p->use_charges(itm_rag, 1); + }} + else { + g->add_msg_if_player(p,"Nothing to use the rag for."); + } + +} + /* MACGUFFIN FUNCTIONS * These functions should refer to it->associated_mission for the particulars */ diff --git a/iuse.h b/iuse.h index 23ac7fd40c6d2..de8b766128ffa 100644 --- a/iuse.h +++ b/iuse.h @@ -120,6 +120,8 @@ class iuse void wrench (game *g, player *p, item *it, bool t); void boltcutters (game *g, player *p, item *it, bool t); void mop (game *g, player *p, item *it, bool t); + void rag (game *g, player *p, item *it, bool t); //Oddzball-Use rags to stop bleeding too? + // MACGUFFINS void mcg_note (game *g, player *p, item *it, bool t); // ARTIFACTS diff --git a/map.cpp b/map.cpp index c08d528f04ebc..f52a339fd1650 100644 --- a/map.cpp +++ b/map.cpp @@ -526,7 +526,6 @@ void map::vehmove(game *g) (vel2/100 - sb_bonus < 10 ? 10 : vel2/100 - sb_bonus)); } else if (veh->part_with_feature (ppl[ps], vpf_controls) >= 0) { - const int lose_ctrl_roll = rng (0, imp); if (lose_ctrl_roll > psg->dex_cur * 2 + psg->skillLevel("driving").level() * 3) { if (psgname.length()) @@ -1806,7 +1805,7 @@ item map::water_from(const int x, const int y) ret.poison = rng(1, 4); else if (ter(x, y) == t_sewage) ret.poison = rng(1, 7); - else if (ter(x, y) == t_toilet && !one_in(3)) + else if (ter(x, y) == t_toilet && one_in(4)) //Oddzball- Not so many pison toilets.. ret.poison = rng(1, 3); return ret; @@ -2698,6 +2697,8 @@ void map::shift(game *g, const int wx, const int wy, const int sx, const int sy) // Clear vehicle list and rebuild after shift clear_vehicle_cache(); vehicle_list.clear(); + + // Shift the map sx submaps to the right and sy submaps down. // sx and sy should never be bigger than +/-1. // wx and wy are our position in the world, for saving/loading purposes. diff --git a/mapdata.h b/mapdata.h index f4f104c9c4ec9..a090504228655 100644 --- a/mapdata.h +++ b/mapdata.h @@ -72,7 +72,7 @@ enum ter_id { t_null = 0, t_hole, // Real nothingness; makes you fall a z-level // Ground -t_dirt, t_sand, t_dirtmound, t_pit_shallow, t_pit, +t_dirt, t_sand, t_dirtmound, t_pit_shallow, t_pit, t_pit_corpsed, t_pit_covered, t_pit_spiked, t_pit_spiked_covered, t_rock_floor, t_rubble, t_ash, t_metal, t_wreckage, t_grass, @@ -94,7 +94,7 @@ t_wall_glass_v, t_wall_glass_h, t_wall_glass_v_alarm, t_wall_glass_h_alarm, t_reinforced_glass_v, t_reinforced_glass_h, t_bars, -t_door_c, t_door_b, t_door_o, t_door_locked, t_door_locked_alarm, t_door_frame, +t_door_c, t_door_b, t_door_o, t_door_locked, t_door_locked_alarm, t_door_frame, t_chaingate_l, t_chaingate_c, t_chaingate_o, t_door_boarded, t_door_metal_c, t_door_metal_o, t_door_metal_locked, t_door_glass_c, t_door_glass_o, @@ -117,9 +117,9 @@ t_marloss, t_fungus, t_tree_fungal, t_water_sh, t_water_dp, t_sewage, t_lava, // Embellishments -t_bed, t_toilet, t_makeshift_bed, +t_bed, t_toilet, t_makeshift_bed, // More embellishments than you can shake a stick at. -t_sink, t_oven, t_bathtub, t_chair, t_armchair, t_cupboard, t_trashcan, t_desk, +t_sink, t_oven, t_bathtub, t_chair, t_armchair, t_cupboard, t_trashcan, t_desk, t_sandbox, t_slide, t_monkey_bars, t_backboard, t_bench, t_table, t_pool_table, t_gas_pump, t_gas_pump_smashed, @@ -195,7 +195,7 @@ const ter_t terlist[num_terrain_types] = { // MUST match enum ter_id above! mfb(transparent)}, {"sidewalk", '.', c_ltgray, 2, tr_null, mfb(transparent)}, -{"floor", '.', c_cyan, 2, tr_null, +{"floor", '.', c_ltgray, 2, tr_null, //Oddzball-Changed back to c_ltgray mfb(transparent)|mfb(l_flammable)|mfb(supports_roof)|mfb(collapses)}, {"metal grate", '#', c_dkgray, 2, tr_null, mfb(transparent)}, @@ -226,26 +226,26 @@ const ter_t terlist[num_terrain_types] = { // MUST match enum ter_id above! {"broken wood wall", '&', c_ltred, 0, tr_null, mfb(transparent)|mfb(bashable)|mfb(flammable2)|mfb(noitem)| mfb(supports_roof)}, -{"wall", '|', c_ltgray, 0, tr_null, +{"wall", '|', i_ltgray, 0, tr_null, //Oddzball-Changed Wall Graphics c_* to i_* should give us nicer walls mfb(flammable)|mfb(noitem)|mfb(supports_roof)}, -{"wall", '-', c_ltgray, 0, tr_null, +{"wall", '-', i_ltgray, 0, tr_null, mfb(flammable)|mfb(noitem)|mfb(supports_roof)}, -{"concrete wall", '|', c_dkgray, 0, tr_null, +{"concrete wall", '|', i_dkgray, 0, tr_null, mfb(noitem)|mfb(supports_roof)}, -{"concrete wall", '-', c_dkgray, 0, tr_null, +{"concrete wall", '-', i_dkgray, 0, tr_null, mfb(noitem)|mfb(supports_roof)}, -{"metal wall", '|', c_cyan, 0, tr_null, +{"metal wall", '|', i_cyan, 0, tr_null, mfb(noitem)|mfb(noitem)|mfb(supports_roof)}, -{"metal wall", '-', c_cyan, 0, tr_null, +{"metal wall", '-', i_cyan, 0, tr_null, mfb(noitem)|mfb(noitem)|mfb(supports_roof)}, -{"glass wall", '|', c_ltcyan, 0, tr_null, +{"glass wall", '|', i_ltcyan, 0, tr_null, mfb(transparent)|mfb(bashable)|mfb(noitem)|mfb(supports_roof)}, -{"glass wall", '-', c_ltcyan, 0, tr_null, +{"glass wall", '-', i_ltcyan, 0, tr_null, mfb(transparent)|mfb(bashable)|mfb(noitem)|mfb(supports_roof)}, -{"glass wall", '|', c_ltcyan, 0, tr_null, // Alarmed +{"glass wall", '|', i_ltcyan, 0, tr_null, // Alarmed mfb(transparent)|mfb(bashable)|mfb(alarmed)|mfb(noitem)| mfb(supports_roof)}, -{"glass wall", '-', c_ltcyan, 0, tr_null, // Alarmed +{"glass wall", '-', i_ltcyan, 0, tr_null, // Alarmed mfb(transparent)|mfb(bashable)|mfb(alarmed)|mfb(noitem)| mfb(supports_roof)}, {"reinforced glass", '|', c_ltcyan, 0, tr_null, @@ -292,16 +292,16 @@ const ter_t terlist[num_terrain_types] = { // MUST match enum ter_id above! mfb(noitem)}, {"steel compactor", '&', c_green, 0, tr_null, mfb(transparent)}, -{"window", '"', c_ltcyan, 0, tr_null, +{"window", '#', c_ltcyan, 0, tr_null, //Oddzball-Window Bold Test h_* and symbol change EDIT: trying c_* and dif symbol mfb(transparent)|mfb(bashable)|mfb(flammable)|mfb(noitem)| mfb(supports_roof)}, -{"window", '"', c_ltcyan, 0, tr_null, +{"window", '#', c_ltcyan, 0, tr_null, mfb(transparent)|mfb(bashable)|mfb(flammable)|mfb(noitem)| mfb(supports_roof)|mfb(deconstruct)}, //has curtains {"open window", '\'', c_ltcyan, 4, tr_null, mfb(transparent)|mfb(flammable)|mfb(noitem)| mfb(supports_roof)}, -{"closed curtains", '"', c_dkgray, 0, tr_null, +{"closed curtains", '-', i_dkgray, 0, tr_null, mfb(bashable)|mfb(flammable)|mfb(noitem)| mfb(supports_roof)}, {"window", '"', c_ltcyan, 0, tr_null, // Actually alarmed diff --git a/mapgen.cpp b/mapgen.cpp index 0bc33468b128f..bd6440ebaa28a 100644 --- a/mapgen.cpp +++ b/mapgen.cpp @@ -15,7 +15,7 @@ ter_id grass_or_dirt() { - if (one_in(4)) + if (one_in(3)) return t_grass; return t_dirt; } @@ -1175,7 +1175,7 @@ void map::draw_map(oter_id terrain_type, oter_id t_north, oter_id t_east, while (ter(rn, bw - 1) != t_floor); ter(rn, bw - 1) = t_stairs_down; } - if (one_in(100)) { // Houses have a 1 in 100 chance of wasps! + if (one_in(20)) { // Houses have a 1 in 100 chance of wasps! //Oddzball-Spawn Zombie! 1 in 20 for (int i = 0; i < SEEX * 2; i++) { for (int j = 0; j < SEEY * 2; j++) { if (ter(i, j) == t_door_c || ter(i, j) == t_door_locked) @@ -1200,16 +1200,16 @@ void map::draw_map(oter_id terrain_type, oter_id t_north, oter_id t_east, ter(podx + x, pody + y) = t_paper; } } - add_spawn(mon_wasp, 1, podx, pody); + add_spawn(mon_zombie, 1, podx, pody); } place_items(mi_rare, 70, 0, 0, SEEX * 2 - 1, SEEY * 2 - 1, false, turn); - } else if (one_in(150)) { // No wasps; black widows? + } else if (one_in(100)) { // No wasps; black widows? //Oddzball-Rats! DO I need to worry about pods or webs? for (int i = 0; i < SEEX * 2; i++) { for (int j = 0; j < SEEY * 2; j++) { if (ter(i, j) == t_floor) { if (one_in(15)) { - add_spawn(mon_spider_widow, rng(1, 2), i, j); + add_spawn(mon_sewer_rat, rng(1, 2), i, j); for (int x = i - 1; x <= i + 1; x++) { for (int y = j - 1; y <= j + 1; y++) { if (ter(x, y) == t_floor) @@ -1365,7 +1365,7 @@ void map::draw_map(oter_id terrain_type, oter_id t_north, oter_id t_east, rotate(rng(0, 3)); } } break; - +//Oddzball-Copy this and make Grocery Store? case ot_s_gas_north: case ot_s_gas_east: case ot_s_gas_south: @@ -1431,7 +1431,7 @@ void map::draw_map(oter_id terrain_type, oter_id t_north, oter_id t_east, if (terrain_type == ot_s_gas_west) rotate(3); break; - +//Oddzball-End of possible copy Grovery(Remove pumps and would be Parking lot...) case ot_s_pharm_north: case ot_s_pharm_east: case ot_s_pharm_south: @@ -4191,15 +4191,15 @@ case ot_s_garage_north: place_items(mi_mechanics, 90, 1, yard_wdth+1, 1, yard_wdth+7, true, 0); place_items(mi_mechanics, 90, 4, SEEY*2-5, 15, SEEY*2-5, true, 0); - // rotate garage and place vehicles - vhtype_id vt = veh_motorcycle_chassis; - + // rotate garage and place vehicles + vhtype_id vt = veh_motorcycle_chassis; + if (one_in(10)) - vhtype_id vt = veh_car; - else if(one_in(5)) - vhtype_id vt = veh_car_chassis; - else if (one_in(2)) - vhtype_id vt = veh_sandbike_chassis; + vhtype_id vt = veh_car; + else if(one_in(5)) + vhtype_id vt = veh_car_chassis; + else if (one_in(2)) + vhtype_id vt = veh_sandbike_chassis; else vhtype_id vt = veh_motorcycle_chassis; int vy = 0, vx = 0, theta = 0; @@ -6590,7 +6590,7 @@ void map::post_process(game *g, unsigned zones) bash(x, y, 20, junk); } } - if (one_in(10)) { // 10% chance of corpses + if (one_in(5)) { // 10% chance of corpses //Oddzball-20% of finding corpses int num_corpses = rng(1, 8); for (int i = 0; i < num_corpses; i++) { int x = rng(0, 23), y = rng(0, 23); diff --git a/mapitemsdef.cpp b/mapitemsdef.cpp index 7997bc5cd8465..efddfaf32d816 100644 --- a/mapitemsdef.cpp +++ b/mapitemsdef.cpp @@ -26,7 +26,7 @@ void game::init_mapitems() setvector( mapitems[mi_road], - itm_muffler, itm_pipe, itm_motor, itm_wheel, itm_big_wheel, itm_seat, + itm_muffler, itm_pipe, itm_motor, itm_wheel, itm_big_wheel, itm_seat, itm_combustion_tiny, itm_combustion_small, itm_combustion, itm_foot_crank, NULL); setvector( @@ -39,22 +39,22 @@ void game::init_mapitems() itm_gloves_wool, itm_gloves_winter, itm_gloves_leather, itm_gloves_fingerless, itm_bandana, itm_scarf, itm_hat_cotton, itm_hat_knit, itm_hat_fur, itm_helmet_bike, itm_helmet_motor, - itm_mag_tv, itm_mag_news, itm_lighter, itm_extinguisher, itm_mp3, - itm_usb_drive, itm_sneakers_fit, itm_boots_fit, itm_boots_steel_fit, + itm_mag_tv, itm_mag_news, itm_lighter, itm_extinguisher, itm_mp3, + itm_usb_drive, itm_sneakers_fit, itm_boots_fit, itm_boots_steel_fit, itm_boots_winter_fit, itm_dress_shoes_fit, itm_heels_fit, NULL); setvector( mapitems[mi_kitchen], - itm_pot, itm_pan, itm_knife_butter, itm_knife_steak, itm_knife_butcher, + itm_chips, itm_pot, itm_pan, itm_knife_butter, itm_knife_steak, itm_knife_butcher, itm_cookbook, itm_rag, itm_hotplate, itm_flashlight, itm_extinguisher, itm_whiskey, itm_bleach, itm_ammonia, itm_flour, itm_sugar, itm_salt, - itm_tea_raw, itm_coffee_raw, + itm_tea_raw, itm_coffee_raw, NULL); setvector( mapitems[mi_fridge], itm_water_clean, itm_oj, itm_cola, itm_rootbeer, itm_milk, itm_V8, itm_apple, - itm_sandwich_t, itm_mushroom, itm_blueberries, itm_strawberries, + itm_sandwich_t, itm_mushroom, itm_blueberries, itm_strawberries, itm_tomato, itm_broccoli, itm_zucchini, itm_frozen_dinner, itm_vodka, itm_apple_cider, NULL); @@ -102,7 +102,7 @@ void game::init_mapitems() itm_jacket_jean, itm_blazer, itm_jacket_leather, itm_poncho, itm_trenchcoat, itm_peacoat, itm_vest, itm_mag_porn, itm_lighter, itm_sewing_kit, itm_thread, itm_flashlight, itm_suit, itm_tophat, - itm_glasses_monocle, itm_duct_tape, + itm_glasses_monocle, itm_duct_tape, itm_jeans_fit, itm_pants_fit, itm_pants_cargo_fit, itm_polo_shirt_fit, itm_sweatshirt_fit, itm_sweater_fit, itm_jacket_light_fit, itm_tshirt_fit, itm_trenchcoat_fit, @@ -174,19 +174,19 @@ void game::init_mapitems() mapitems[mi_hardware], itm_superglue, itm_chain, itm_rope_6, itm_rope_30, itm_glass_sheet, itm_pipe, itm_nail, itm_hose, itm_string_36, itm_frame, itm_metal_tank, - itm_wire, itm_wire_barbed, itm_duct_tape, itm_jerrycan, itm_lawnmower, itm_foot_crank, + itm_wire, itm_wire_barbed, itm_duct_tape, itm_jerrycan, itm_lawnmower, itm_foot_crank, itm_ax, NULL); setvector( mapitems[mi_tools], itm_screwdriver, itm_hammer, itm_wrench, itm_saw, itm_hacksaw, itm_hammer_sledge, itm_xacto, itm_flashlight, itm_crowbar, itm_nailgun, - itm_press, itm_puller, itm_boltcutters, NULL); + itm_press, itm_puller, itm_boltcutters, itm_ax, NULL); setvector( mapitems[mi_bigtools], itm_broom, itm_mop, itm_hoe, itm_shovel, itm_chainsaw_off, - itm_hammer_sledge, itm_jackhammer, itm_jacqueshammer, itm_welder, NULL); + itm_hammer_sledge, itm_jackhammer, itm_jacqueshammer, itm_welder, itm_ax, NULL); setvector( mapitems[mi_mischw], @@ -216,11 +216,11 @@ void game::init_mapitems() mapitems[mi_camping], itm_rope_30, itm_hatchet, itm_pot, itm_pan, itm_binoculars, itm_hotplate, itm_knife_combat, itm_machete, itm_vest, itm_backpack, - itm_bb, itm_bolt_steel, itm_bbgun, itm_crossbow, itm_manual_knives,itm_manual_survival, + itm_bb, itm_bolt_steel, itm_bbgun, itm_crossbow, itm_manual_knives,itm_manual_survival, itm_manual_first_aid, itm_manual_traps, itm_lighter, itm_sewing_kit, itm_thread, itm_hammer, itm_flashlight, itm_water_purifier, itm_radio, itm_beartrap, itm_UPS_off, itm_string_36, itm_longbow, itm_compbow, itm_arrow_wood, - itm_arrow_cf, itm_wire, itm_rollmat, itm_tent_kit, itm_canteen, NULL); + itm_arrow_cf, itm_wire, itm_rollmat, itm_tent_kit, itm_canteen, itm_ax, NULL); setvector( @@ -330,7 +330,7 @@ void game::init_mapitems() setvector( mapitems[mi_shirts], itm_tshirt, itm_polo_shirt, itm_dress_shirt, itm_tank_top, - itm_sweatshirt, itm_sweater, itm_hoodie, + itm_sweatshirt, itm_sweater, itm_hoodie, itm_polo_shirt_fit, itm_sweatshirt_fit, itm_sweater_fit, itm_tshirt_fit, NULL); @@ -348,7 +348,7 @@ void game::init_mapitems() setvector( mapitems[mi_bags], - itm_backpack, itm_purse, itm_mbag, NULL); + itm_backpack, itm_purse, itm_mbag, itm_rucksack, NULL); setvector( mapitems[mi_allclothes], @@ -359,8 +359,8 @@ void game::init_mapitems() itm_blazer, itm_jacket_leather, itm_coat_winter, itm_peacoat, itm_gloves_light, itm_mittens, itm_gloves_wool, itm_gloves_winter, itm_gloves_leather, itm_scarf, itm_hat_cotton, itm_hat_knit, - itm_hat_fur, itm_UPS_off, itm_jeans_fit, itm_pants_fit, - itm_pants_cargo_fit, itm_polo_shirt_fit, itm_sweatshirt_fit, + itm_hat_fur, itm_UPS_off, itm_jeans_fit, itm_pants_fit, + itm_pants_cargo_fit, itm_polo_shirt_fit, itm_sweatshirt_fit, itm_sweater_fit, itm_jacket_light_fit, itm_tshirt_fit, itm_trenchcoat_fit, itm_trenchcoat_leather, itm_trenchcoat_leather_fit, NULL); @@ -450,10 +450,10 @@ void game::init_mapitems() itm_chainsaw_off, itm_jackhammer, itm_jacqueshammer, itm_ring, itm_necklace, itm_usb_drive, itm_broadsword, itm_morningstar, itm_helmet_plate, itm_cot, itm_rollmat, itm_tent_kit, itm_boots_fit, itm_boots_steel_fit, itm_boots_winter_fit, - itm_dress_shoes_fit, itm_bat_metal, itm_jeans_fit, itm_pants_army_fit, + itm_dress_shoes_fit, itm_bat_metal, itm_jeans_fit, itm_pants_army_fit, itm_polo_shirt_fit, itm_sweatshirt_fit, itm_sweater_fit, itm_jacket_light_fit, itm_tshirt_fit, itm_trenchcoat_fit, itm_lawnmower, - itm_lawnmower_machete, itm_picklocks, NULL); + itm_lawnmower_machete, itm_picklocks, itm_rucksack, NULL); setvector( mapitems[mi_mil_surplus], // NOT food or armor! @@ -473,13 +473,13 @@ void game::init_mapitems() itm_backpack, itm_battery, itm_novel_scifi, itm_novel_drama, itm_manual_first_aid, itm_manual_tailor, itm_manual_carpentry, itm_lighter, itm_sewing_kit, itm_thread, itm_hammer, itm_extinguisher, - itm_flashlight, itm_hotplate, itm_water_purifier, itm_radio, itm_rollmat, itm_tent_kit, - itm_canteen, NULL); + itm_flashlight, itm_hotplate, itm_water_purifier, itm_radio, itm_rollmat, itm_tent_kit, + itm_canteen, itm_ax, NULL); setvector( mapitems[mi_mechanics], itm_wrench, itm_frame, itm_wheel, itm_motor, itm_combustion_small, - itm_hacksaw, itm_welder, itm_motor, itm_motor_large, + itm_hacksaw, itm_welder, itm_motor, itm_motor_large, itm_storage_battery, itm_solar_panel, itm_combustion_tiny, itm_jerrycan, NULL); setvector( @@ -603,8 +603,8 @@ void game::init_mapitems() itm_mask_filter, itm_mask_gas, itm_goggles_ski, itm_helmet_skid, itm_armguard_hard, itm_helmet_ball, itm_helmet_riot, itm_helmet_motor, itm_holster, - itm_bootstrap, itm_UPS_off, itm_beltrig, - itm_pants_cargo_fit, itm_pants_army_fit,NULL); + itm_bootstrap, itm_UPS_off, itm_beltrig, + itm_pants_cargo_fit, itm_pants_army_fit, itm_rucksack, NULL); setvector( mapitems[mi_survival_tools], @@ -707,7 +707,7 @@ void game::init_mapitems() setvector( mapitems[mi_bees], itm_bee_sting, itm_chitin_piece, NULL); - + setvector( mapitems[mi_wasps], itm_wasp_sting, itm_chitin_piece, NULL); @@ -725,8 +725,8 @@ void game::init_mapitems() itm_hard_plate, itm_motor, itm_motor_large, itm_hose, itm_pants_army, itm_jumpsuit, itm_kevlar, itm_mask_gas, itm_helmet_army, itm_battery, itm_plut_cell, itm_m249, itm_combustion_large, itm_extinguisher, - itm_two_way_radio, itm_radio, itm_UPS_off, itm_beltrig, - itm_pants_army_fit, itm_boots_fit, NULL); + itm_two_way_radio, itm_radio, itm_UPS_off, itm_beltrig, + itm_pants_army_fit, itm_boots_fit, itm_rucksack, NULL); // TODO: Replace kevlar with the ceramic plate armor setvector( @@ -745,8 +745,8 @@ void game::init_mapitems() itm_silencer, itm_clip, itm_lighter, itm_flashlight, itm_two_way_radio, itm_landmine, itm_grenade, itm_flashbang, itm_EMPbomb, itm_gasbomb, itm_smokebomb, itm_UPS_off, itm_tazer, itm_c4, itm_hk_g80, itm_12mm, - itm_binoculars, itm_u_shotgun, itm_beltrig, itm_pants_army_fit, - itm_spare_mag, itm_canteen, itm_jerrycan, NULL); + itm_binoculars, itm_u_shotgun, itm_beltrig, itm_pants_army_fit, + itm_spare_mag, itm_canteen, itm_jerrycan, itm_rucksack, NULL); setvector( @@ -825,6 +825,6 @@ void game::init_mapitems() itm_chainsaw_on, itm_pipebomb_act, itm_grenade_act, itm_flashbang_act, itm_EMPbomb_act, itm_gasbomb_act, itm_smokebomb_act, itm_molotov_lit, itm_dynamite_act, itm_mininuke_act, itm_UPS_on, itm_mp3_on, itm_c4armed, - itm_apparatus, itm_brazier, + itm_apparatus, itm_grack, itm_brazier, NULL); } diff --git a/mongroupdef.cpp b/mongroupdef.cpp index 22f0bc1fe547a..87c22965a6e0c 100644 --- a/mongroupdef.cpp +++ b/mongroupdef.cpp @@ -5,7 +5,7 @@ void game::init_moncats() { setvector( moncats[mcat_forest], - mon_squirrel, mon_rabbit, mon_deer, mon_wolf, mon_bear, mon_spider_wolf, + mon_squirrel, mon_rabbit, mon_deer, mon_wolf, mon_bear, mon_cougar, mon_spider_wolf, mon_spider_jumping, mon_dog, mon_shia, NULL); setvector( moncats[mcat_ant], @@ -18,10 +18,8 @@ void game::init_moncats() mon_graboid, mon_worm, mon_halfworm, NULL); setvector( moncats[mcat_zombie], - mon_zombie, mon_zombie_cop, mon_zombie_shrieker, mon_zombie_spitter, mon_zombie_fast, - mon_zombie_electric, mon_zombie_brute, mon_zombie_hulk, - mon_zombie_necro, mon_boomer, mon_skeleton, mon_zombie_grabber, - mon_zombie_master, NULL); + mon_dog, mon_cat, mon_zombie, mon_zombie_cop, mon_zombie_fast, + mon_zombie_brute, mon_skeleton, mon_zombie_grabber, NULL); //Oddzball-No goofy Zombie types spawning setvector( moncats[mcat_triffid], mon_triffid, mon_triffid_young, mon_vinebeast, mon_triffid_queen, NULL); diff --git a/monmove.cpp b/monmove.cpp index 172268a5f3ce6..14fdb28d0e96c 100644 --- a/monmove.cpp +++ b/monmove.cpp @@ -366,7 +366,10 @@ point monster::scent_move(game *g) { plans.clear(); std::vector smoves; - int maxsmell = 1; // Squares with smell 0 are not eligable targets + + int maxsmell = 2; // Squares with smell 0 are not eligable targets Oddzball-Scent? + if (has_flag(MF_KEENNOSE)) { + int maxsmell = 1; } //Oddzball-Correct setup for smell? int minsmell = 9999; point pbuff, next(-1, -1); unsigned int smell; @@ -528,6 +531,11 @@ void monster::hit_player(game *g, player &p, bool can_grab) g->add_msg("You feel poison flood your body, wracking you with pain..."); p.add_disease(DI_BADPOISON, 40, g); } + if (has_flag(MF_BLEED) && one_in(5)) { //Oddzball-Bleeding chance + if (!is_npc) + g->add_msg("You're Bleeding!"); + p.add_disease(DI_BLEED, 30, g); + } if (can_grab && has_flag(MF_GRABS) && dice(type->melee_dice, 10) > dice(p.dodge(g), 10)) { if (!is_npc) diff --git a/monster.cpp b/monster.cpp index 66d020cc95afc..4f656e1128b2d 100644 --- a/monster.cpp +++ b/monster.cpp @@ -438,7 +438,7 @@ int monster::trigger_sum(game *g, std::vector *triggers) break; case MTRIG_PLAYER_WEAK: - if (g->u.hp_percentage() <= 70) + if (g->u.hp_percentage() <= 50) ret += 10 - int(g->u.hp_percentage() / 10); break; diff --git a/mtype.h b/mtype.h index 53830ab0558bc..d15b436ec42c9 100644 --- a/mtype.h +++ b/mtype.h @@ -30,9 +30,9 @@ num_species enum mon_id { mon_null = 0, // Wildlife -mon_squirrel, mon_rabbit, mon_deer, mon_wolf, mon_bear, +mon_squirrel, mon_rabbit, mon_deer, mon_wolf, mon_bear, mon_cougar, //Oddzball-Cougar and cats.. // Friendly animals -mon_dog, +mon_dog, mon_cat, // Ants mon_ant_larva, mon_ant, mon_ant_soldier, mon_ant_queen, mon_ant_fungus, // Bees @@ -123,6 +123,7 @@ MF_SEES, // It can see you (and will run/follow) MF_HEARS, // It can hear you MF_GOODHEARING, // Pursues sounds more than most monsters MF_SMELLS, // It can smell you +MF_KEENNOSE, //Keen sense of smell MF_STUMBLES, // Stumbles in its movement MF_WARM, // Warm blooded MF_NOHEAD, // Headshots not allowed! @@ -133,6 +134,7 @@ MF_DESTROYS, // Bashes down walls and more MF_POISON, // Poisonous to eat MF_VENOM, // Attack may poison the player MF_BADVENOM, // Attack may SEVERELY poison the player +MF_BLEED, //Oddzball-Causes player to bleed MF_WEBWALK, // Doesn't destroy webs MF_DIGS, // Digs through the ground MF_FLIES, // Can fly (over water, etc) diff --git a/mtypedef.cpp b/mtypedef.cpp index 4a0ea269d03e1..1c717e9a1fae1 100644 --- a/mtypedef.cpp +++ b/mtypedef.cpp @@ -64,11 +64,11 @@ FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR); mon("wolf", species_mammal, 'w', c_dkgray, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 4, 12, 0, 20,165, 14, 2, 3, 4, 4, 1, 0, 0, 28, 0, + 6, 10, 0, 20,165, 14, 2, 3, 4, 4, 1, 0, 0, 28, 0, &mdeath::normal, &mattack::none, "\ A vicious and fast pack hunter." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN, MF_KEENNOSE, MF_BLEED); ANGER(MTRIG_TIME, MTRIG_PLAYER_WEAK, MTRIG_HURT); PLACATE(MTRIG_MEAT); FEARS(MTRIG_FIRE, MTRIG_FRIEND_DIED); @@ -79,22 +79,45 @@ mon("bear", species_mammal, 'B', c_dkgray, MS_LARGE, FLESH, &mdeath::normal, &mattack::none, "\ Remember, only YOU can prevent forest fires." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_BLEED); ANGER(MTRIG_PLAYER_CLOSE); PLACATE(MTRIG_MEAT); FEARS(MTRIG_FIRE); +mon("cougar", species_mammal, 'C', c_dkgray, MS_MEDIUM, FLESH, //Oddzball-Cougars! Jumping? +// frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq + 3, 12, 0, 20,180, 14, 2, 3, 4, 4, 1, 0, 0, 15, 5, + &mdeath::normal, &mattack::leap, "\ +A vicious and fast pack hunter." +); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN, MF_KEENNOSE, MF_BLEED); +ANGER(MTRIG_TIME, MTRIG_PLAYER_WEAK, MTRIG_HURT); +PLACATE(MTRIG_MEAT); +FEARS(MTRIG_FIRE, MTRIG_FRIEND_DIED); + // DOMESICATED ANIMALS mon("dog", species_mammal, 'd', c_white, MS_SMALL, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 1, 5, 2, 15,150, 12, 2, 3, 3, 3, 0, 0, 0, 25, 0, + 5, 0, -30, 15,140, 12, 2, 3, 3, 3, 0, 0, 0, 15, 0, &mdeath::normal, &mattack::none, "\ A medium-sized domesticated dog, gone feral." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN, MF_KEENNOSE, MF_BLEED); +ANGER(MTRIG_HURT); PLACATE(MTRIG_MEAT); FEARS(MTRIG_FIRE); +mon("cat", species_mammal, 'c', c_white, MS_TINY, FLESH, //Oddzball-Added Feral Cat +// frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq + 5, 0, -40, 15,150, 12, 1, 3, 2, 0, 0, 0, 0, 10, 0, + &mdeath::normal, &mattack::none, "\ +A small domesticated cat, gone feral." +); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_ANIMAL, MF_WARM, MF_FUR, MF_HIT_AND_RUN); +ANGER(MTRIG_HURT); +PLACATE(MTRIG_MEAT); +FEARS(MTRIG_FIRE, MTRIG_SOUND); + // INSECTOIDS mon("ant larva",species_insect, 'a', c_white, MS_SMALL, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq @@ -166,12 +189,12 @@ sized sting pointed forward." FLAGS(MF_SMELLS, MF_VENOM, MF_FLIES, MF_STUMBLES, MF_HIT_AND_RUN); ANGER(MTRIG_FRIEND_DIED, MTRIG_PLAYER_CLOSE); -mon("giant wasp",species_insect, 'a', c_red, MS_MEDIUM, FLESH, +mon("Wasp Swarm",species_insect, 'a', c_red, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 2, 22, 5, 60,150, 6, 1, 3, 7, 7, 0, 7,-40, 35, 0, + 2, 22, 5, 60,150, 6, 1, 3, 0, 7, 0, 0,-40, 5, 0, &mdeath::normal, &mattack::none, "\ -An evil-looking, slender-bodied wasp with\n\ -a vicious sting on its abdomen." +A swarm of wasps with\n\ +vicious looking stingers." ); FLAGS(MF_SMELLS, MF_POISON, MF_VENOM, MF_FLIES); ANGER(MTRIG_FRIEND_DIED, MTRIG_PLAYER_CLOSE, MTRIG_SOUND); @@ -211,23 +234,23 @@ FLAGS(MF_DIGS, MF_HEARS, MF_GOODHEARING, MF_WARM, MF_LEATHER); // ZOMBIES mon("zombie", species_zombie, 'Z', c_ltgreen, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 90, 3,100,100, 70, 8, 1, 5, 0, 1, 0, 0, 40, 50, 0, + 99, 3,100,100, 50, 8, 1, 5, 0, 1, 0, 0, 40, 50, 0, &mdeath::normal, &mattack::none, "\ A human body, stumbling slowly forward on\n\ uncertain legs, possessed with an unstoppable\n\ rage." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED, MF_GRABS); mon("zombie cop", species_zombie, 'Z', c_blue, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 2, 3,100,100, 70, 8, 1, 5, 0, 1, 0, 0, 40, 50, 0, + 3, 3,100,100, 50, 8, 1, 5, 0, 1, 0, 0, 40, 50, 0, &mdeath::normal, &mattack::none, "\ A human body, encapsulated in tough riot\n\ armour, this zombie was clearly a cop gearing\n\ up to fight the infection." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED); mon("shrieker zombie",species_zombie, 'Z',c_magenta, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq @@ -263,21 +286,20 @@ FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, mon("fast zombie",species_zombie, 'Z', c_ltred, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 6, 12,100,100,150, 10, 1, 4, 3, 4, 0, 0, 45, 40, 0, + 20, 3,100,100,100, 10, 1, 4, 3, 4, 0, 0, 45, 40, 0, &mdeath::normal, &mattack::none, "\ -This deformed, sinewy zombie stays close to\n\ -the ground, loping forward faster than most\n\ -humans ever could." +This zombie seems fresher and able to\n\ +move more quickly than most zombies." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED, MF_HIT_AND_RUN); mon("zombie brute",species_zombie, 'Z', c_red, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 4, 25,100,100,115, 9, 4, 4, 2, 0, 6, 3, 60, 80, 0, + 4, 25,100,100,100, 9, 4, 4, 2, 0, 6, 3, 60, 80, 0, &mdeath::normal, &mattack::none, "\ -A hideous beast of a zombie, bulging with\n\ -distended muscles on both arms and legs." +In life, this zombie was probably an\n\ +athlete, it looks dangerous." ); FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON); @@ -321,15 +343,14 @@ and it dribbles a gray sludge from its mouth." ); FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON); -mon("skeleton", species_zombie, 'Z', c_white, MS_MEDIUM, STONE, +mon("Decayed Zombie", species_zombie, 'Z', c_white, MS_MEDIUM, STONE, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq - 7, 8,100,100, 90, 10, 1, 5, 3, 2, 0, 15, 0, 40, 0, + 50, 3,100,100, 50, 10, 1, 5, 3, 2, 0, 15, 0, 40, 0, &mdeath::normal, &mattack::none, "\ -A skeleton picked clean of all but a few\n\ -rotten scraps of flesh, somehow still in\n\ -motion." +A zombie in a highly advanced state\n\ +of decay." ); -FLAGS(MF_SEES, MF_HEARS, MF_HARDTOSHOOT); +FLAGS(MF_SEES, MF_HEARS, MF_BLEED, MF_HARDTOSHOOT); mon("zombie necromancer",species_zombie, 'Z',c_dkgray, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq @@ -350,7 +371,7 @@ A zombie wearing a tattered lab coat and\n\ some sort of utility belt. It looks weaker\n\ than most zombies, but more resourceful too." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED, MF_ACIDPROOF); mon("zombie soldier", species_zombie, 'Z',c_ltblue, MS_MEDIUM, FLESH, @@ -362,7 +383,7 @@ Its tattered armor gives it strong defense,\n\ and it is much more physically fit than\n\ most zombies." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_WARM, MF_BASHES, MF_POISON); +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED); mon("grabber zombie", species_zombie, 'Z',c_green, MS_MEDIUM, FLESH, // frq dif agr mor spd msk mdi m## cut dge bsh cut itm HP special freq @@ -372,7 +393,7 @@ This zombie seems to have slightly longer\n\ than ordinary arms, and constantly gropes\n\ at its surroundings as it moves." ); -FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, +FLAGS(MF_SEES, MF_HEARS, MF_SMELLS, MF_STUMBLES, MF_WARM, MF_BASHES, MF_POISON, MF_BLEED, MF_GRABS); mon("master zombie", species_zombie, 'M',c_yellow, MS_MEDIUM, FLESH, diff --git a/newcharacter.cpp b/newcharacter.cpp index 170447471c960..9f0dbb5b713e4 100644 --- a/newcharacter.cpp +++ b/newcharacter.cpp @@ -21,13 +21,13 @@ #define LINE_OXXX 4194423 #define LINE_XXXX 4194414 -// Colors used in this file: (Most else defaults to c_ltgray) +// Colors used in this file: (Most else defaults to c_ltgray) //Oddzball-Made traits easier to see the On/Off #define COL_STAT_ACT c_ltred // Selected stat #define COL_TR_GOOD c_green // Good trait descriptive text -#define COL_TR_GOOD_OFF c_ltgreen // A toggled-off good trait +#define COL_TR_GOOD_OFF c_ltgray // A toggled-off good trait #define COL_TR_GOOD_ON c_green // A toggled-on good trait #define COL_TR_BAD c_red // Bad trait descriptive text -#define COL_TR_BAD_OFF c_ltred // A toggled-off bad trait +#define COL_TR_BAD_OFF c_ltgray // A toggled-off bad trait #define COL_TR_BAD_ON c_red // A toggled-on bad trait #define COL_SKILL_USED c_green // A skill with at least one point @@ -784,7 +784,7 @@ int set_skills(WINDOW* w, player *u, int &points) switch (input()) { case 'j': if (cur_sk < Skill::skills.size() - 1) - cur_sk++; + cur_sk++; currentSkill = Skill::skill(cur_sk); break; case 'k': @@ -953,7 +953,7 @@ int random_skill() int calc_HP(int strength, bool tough) { - return (60 + 3 * strength) * (tough ? 1.2 : 1); + return (30 + 3 * strength) * (tough ? 1.2 : 1); //Oddzball- Less starting HP. } void save_template(player *u) diff --git a/omdata.h b/omdata.h index c3db91565e404..b48357f3ad7ab 100644 --- a/omdata.h +++ b/omdata.h @@ -145,8 +145,8 @@ const oter_t oterlist[num_ter_types] = { {"forest", 'F', c_green, 3, field_extras, false, false}, /* The tile above is a spider pit. */ {"fungal bloom", 'T', c_ltgray, 2, field_extras, false, false}, -{"highway", 'H', c_dkgray, 2, road_extras, false, false}, -{"highway", '=', c_dkgray, 2, road_extras, false, false}, +{"highway", LINE_XOXO, c_dkgray, 2, road_extras, false, false}, +{"highway", LINE_OXOX, c_dkgray, 2, road_extras, false, false}, {"BUG", '%', c_magenta, 0, no_extras, false, false}, {"road", LINE_XOXO, c_dkgray, 2, road_extras, false, false}, {"road", LINE_OXOX, c_dkgray, 2, road_extras, false, false}, @@ -175,93 +175,93 @@ const oter_t oterlist[num_ter_types] = { {"river bank", 'R', c_ltblue, 1, no_extras, false, false}, {"river bank", 'R', c_ltblue, 1, no_extras, false, false}, {"river bank", 'R', c_ltblue, 1, no_extras, false, false}, -{"house", '^', c_ltgreen, 5, build_extras, false, false}, -{"house", '>', c_ltgreen, 5, build_extras, false, false}, -{"house", 'v', c_ltgreen, 5, build_extras, false, false}, -{"house", '<', c_ltgreen, 5, build_extras, false, false}, -{"house", '^', c_ltgreen, 5, build_extras, false, false}, -{"house", '>', c_ltgreen, 5, build_extras, false, false}, -{"house", 'v', c_ltgreen, 5, build_extras, false, false}, -{"house", '<', c_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, +{"house", 'H', i_ltgreen, 5, build_extras, false, false}, {"parking lot", 'O', c_dkgray, 1, build_extras, false, false}, {"park", 'O', c_green, 2, build_extras, false, false}, -{"gas station", '^', c_ltblue, 5, build_extras, false, false}, -{"gas station", '>', c_ltblue, 5, build_extras, false, false}, -{"gas station", 'v', c_ltblue, 5, build_extras, false, false}, -{"gas station", '<', c_ltblue, 5, build_extras, false, false}, -{"pharmacy", '^', c_ltred, 5, build_extras, false, false}, -{"pharmacy", '>', c_ltred, 5, build_extras, false, false}, -{"pharmacy", 'v', c_ltred, 5, build_extras, false, false}, -{"pharmacy", '<', c_ltred, 5, build_extras, false, false}, -{"grocery store", '^', c_green, 5, build_extras, false, false}, -{"grocery store", '>', c_green, 5, build_extras, false, false}, -{"grocery store", 'v', c_green, 5, build_extras, false, false}, -{"grocery store", '<', c_green, 5, build_extras, false, false}, -{"hardware store", '^', c_cyan, 5, build_extras, false, false}, -{"hardware store", '>', c_cyan, 5, build_extras, false, false}, -{"hardware store", 'v', c_cyan, 5, build_extras, false, false}, -{"hardware store", '<', c_cyan, 5, build_extras, false, false}, -{"electronics store", '^', c_yellow, 5, build_extras, false, false}, -{"electronics store", '>', c_yellow, 5, build_extras, false, false}, -{"electronics store", 'v', c_yellow, 5, build_extras, false, false}, -{"electronics store", '<', c_yellow, 5, build_extras, false, false}, -{"sporting goods store",'^', c_ltcyan, 5, build_extras, false, false}, -{"sporting goods store",'>', c_ltcyan, 5, build_extras, false, false}, -{"sporting goods store",'v', c_ltcyan, 5, build_extras, false, false}, -{"sporting goods store",'<', c_ltcyan, 5, build_extras, false, false}, -{"liquor store", '^', c_magenta, 5, build_extras, false, false}, -{"liquor store", '>', c_magenta, 5, build_extras, false, false}, -{"liquor store", 'v', c_magenta, 5, build_extras, false, false}, -{"liquor store", '<', c_magenta, 5, build_extras, false, false}, -{"gun store", '^', c_red, 5, build_extras, false, false}, -{"gun store", '>', c_red, 5, build_extras, false, false}, -{"gun store", 'v', c_red, 5, build_extras, false, false}, -{"gun store", '<', c_red, 5, build_extras, false, false}, -{"clothing store", '^', c_blue, 5, build_extras, false, false}, -{"clothing store", '>', c_blue, 5, build_extras, false, false}, -{"clothing store", 'v', c_blue, 5, build_extras, false, false}, -{"clothing store", '<', c_blue, 5, build_extras, false, false}, -{"library", '^', c_brown, 5, build_extras, false, false}, -{"library", '>', c_brown, 5, build_extras, false, false}, -{"library", 'v', c_brown, 5, build_extras, false, false}, -{"library", '<', c_brown, 5, build_extras, false, false}, -{"restaurant", '^', c_pink, 5, build_extras, false, false}, -{"restaurant", '>', c_pink, 5, build_extras, false, false}, -{"restaurant", 'v', c_pink, 5, build_extras, false, false}, -{"restaurant", '<', c_pink, 5, build_extras, false, false}, -{"subway station", 'S', c_yellow, 5, build_extras, true, false}, -{"subway station", 'S', c_yellow, 5, build_extras, true, false}, -{"subway station", 'S', c_yellow, 5, build_extras, true, false}, -{"subway station", 'S', c_yellow, 5, build_extras, true, false}, -{"garage", '^', c_ltgray, 5, build_extras, false, false}, -{"garage", '>', c_ltgray, 5, build_extras, false, false}, -{"garage", 'v', c_ltgray, 5, build_extras, false, false}, -{"garage", '<', c_ltgray, 5, build_extras, false, false}, -{"police station", '^', c_dkgray, 5, build_extras, false, false}, -{"police station", '>', c_dkgray, 5, build_extras, false, false}, -{"police station", 'v', c_dkgray, 5, build_extras, false, false}, -{"police station", '<', c_dkgray, 5, build_extras, false, false}, -{"bank", '^', c_ltgray, 5, no_extras, false, false}, -{"bank", '>', c_ltgray, 5, no_extras, false, false}, -{"bank", 'v', c_ltgray, 5, no_extras, false, false}, -{"bank", '<', c_ltgray, 5, no_extras, false, false}, -{"bar", '^', c_pink, 5, build_extras, false, false}, -{"bar", '>', c_pink, 5, build_extras, false, false}, -{"bar", 'v', c_pink, 5, build_extras, false, false}, -{"bar", '<', c_pink, 5, build_extras, false, false}, -{"pawn shop", '^', c_white, 5, build_extras, false, false}, -{"pawn shop", '>', c_white, 5, build_extras, false, false}, -{"pawn shop", 'v', c_white, 5, build_extras, false, false}, -{"pawn shop", '<', c_white, 5, build_extras, false, false}, -{"mil. surplus", '^', c_white, 5, build_extras, false, false}, -{"mil. surplus", '>', c_white, 5, build_extras, false, false}, -{"mil. surplus", 'v', c_white, 5, build_extras, false, false}, -{"mil. surplus", '<', c_white, 5, build_extras, false, false}, -{"megastore", 'M', c_ltblue, 5, build_extras, false, false}, +{"gas station", 'G', i_ltblue, 5, build_extras, false, false}, +{"gas station", 'G', i_ltblue, 5, build_extras, false, false}, +{"gas station", 'G', i_ltblue, 5, build_extras, false, false}, +{"gas station", 'G', i_ltblue, 5, build_extras, false, false}, +{"pharmacy", 'P', i_ltred, 5, build_extras, false, false}, +{"pharmacy", 'P', i_ltred, 5, build_extras, false, false}, +{"pharmacy", 'P', i_ltred, 5, build_extras, false, false}, +{"pharmacy", 'P', i_ltred, 5, build_extras, false, false}, +{"grocery store", 'G', i_green, 5, build_extras, false, false}, //Oddzball-Made Grocery Easier to see +{"grocery store", 'G', i_green, 5, build_extras, false, false}, +{"grocery store", 'G', i_green, 5, build_extras, false, false}, +{"grocery store", 'G', i_green, 5, build_extras, false, false}, +{"hardware store", 'H', i_cyan, 5, build_extras, false, false}, +{"hardware store", 'H', i_cyan, 5, build_extras, false, false}, +{"hardware store", 'H', i_cyan, 5, build_extras, false, false}, +{"hardware store", 'H', i_cyan, 5, build_extras, false, false}, +{"electronics store", 'E', i_yellow, 5, build_extras, false, false}, +{"electronics store", 'E', i_yellow, 5, build_extras, false, false}, +{"electronics store", 'E', i_yellow, 5, build_extras, false, false}, +{"electronics store", 'E', i_yellow, 5, build_extras, false, false}, +{"sporting goods store",'S', i_ltcyan, 5, build_extras, false, false}, +{"sporting goods store",'S', i_ltcyan, 5, build_extras, false, false}, +{"sporting goods store",'S', i_ltcyan, 5, build_extras, false, false}, +{"sporting goods store",'S', i_ltcyan, 5, build_extras, false, false}, +{"liquor store", 'L', i_magenta, 5, build_extras, false, false}, +{"liquor store", 'L', i_magenta, 5, build_extras, false, false}, +{"liquor store", 'L', i_magenta, 5, build_extras, false, false}, +{"liquor store", 'L', i_magenta, 5, build_extras, false, false}, +{"gun store", 'G', i_red, 5, build_extras, false, false}, +{"gun store", 'G', i_red, 5, build_extras, false, false}, +{"gun store", 'G', i_red, 5, build_extras, false, false}, +{"gun store", 'G', i_red, 5, build_extras, false, false}, +{"clothing store", 'C', i_blue, 5, build_extras, false, false}, +{"clothing store", 'C', i_blue, 5, build_extras, false, false}, +{"clothing store", 'C', i_blue, 5, build_extras, false, false}, +{"clothing store", 'C', i_blue, 5, build_extras, false, false}, +{"library", 'L', i_brown, 5, build_extras, false, false}, //Oddzball-Dark Brown? +{"library", 'L', i_brown, 5, build_extras, false, false}, +{"library", 'L', i_brown, 5, build_extras, false, false}, +{"library", 'L', i_brown, 5, build_extras, false, false}, +{"restaurant", 'R', i_pink, 5, build_extras, false, false}, +{"restaurant", 'R', i_pink, 5, build_extras, false, false}, +{"restaurant", 'R', i_pink, 5, build_extras, false, false}, +{"restaurant", 'R', i_pink, 5, build_extras, false, false}, //Oddzball-Changed Resturant Graphic +{"subway station", 'S', i_yellow, 5, build_extras, true, false}, +{"subway station", 'S', i_yellow, 5, build_extras, true, false}, +{"subway station", 'S', i_yellow, 5, build_extras, true, false}, +{"subway station", 'S', i_yellow, 5, build_extras, true, false}, +{"garage", 'G', i_ltgray, 5, build_extras, false, false}, +{"garage", 'G', i_ltgray, 5, build_extras, false, false}, +{"garage", 'G', i_ltgray, 5, build_extras, false, false}, +{"garage", 'G', i_ltgray, 5, build_extras, false, false}, +{"police station", 'P', h_yellow, 5, build_extras, false, false}, +{"police station", 'P', h_yellow, 5, build_extras, false, false}, +{"police station", 'P', h_yellow, 5, build_extras, false, false}, +{"police station", 'P', h_yellow, 5, build_extras, false, false}, +{"bank", '$', i_yellow, 5, no_extras, false, false}, //Oddzball-CHanged Bank Graphic +{"bank", '$', i_yellow, 5, no_extras, false, false}, +{"bank", '$', i_yellow, 5, no_extras, false, false}, +{"bank", '$', i_yellow, 5, no_extras, false, false}, +{"bar", 'B', i_pink, 5, build_extras, false, false}, +{"bar", 'B', i_pink, 5, build_extras, false, false}, +{"bar", 'B', i_pink, 5, build_extras, false, false}, +{"bar", 'B', i_pink, 5, build_extras, false, false}, +{"pawn shop", 'P', i_white, 5, build_extras, false, false}, +{"pawn shop", 'P', i_white, 5, build_extras, false, false}, +{"pawn shop", 'P', i_white, 5, build_extras, false, false}, +{"pawn shop", 'P', i_white, 5, build_extras, false, false}, +{"mil. surplus", 'M', i_dkgray, 5, build_extras, false, false}, +{"mil. surplus", 'M', i_dkgray, 5, build_extras, false, false}, +{"mil. surplus", 'M', i_dkgray, 5, build_extras, false, false}, +{"mil. surplus", 'M', i_dkgray, 5, build_extras, false, false}, +{"megastore", '+', c_ltblue, 5, build_extras, false, false}, {"megastore", 'M', c_blue, 5, build_extras, false, false}, -{"hospital", 'H', c_ltred, 5, build_extras, false, false}, +{"hospital", '+', c_ltred, 5, build_extras, false, false}, {"hospital", 'H', c_red, 5, build_extras, false, false}, -{"mansion", 'M', c_ltgreen, 5, build_extras, false, false}, +{"mansion", '+', c_ltgreen, 5, build_extras, false, false}, {"mansion", 'M', c_green, 5, build_extras, false, false}, {"evac shelter", '+', c_white, 2, no_extras, true, false}, {"evac shelter", '+', c_white, 2, no_extras, false, true}, @@ -436,8 +436,8 @@ const overmap_special overmap_specials[NUM_OMSPECS] = { {ot_crater, 0, 10, 0, -1, mcat_null, 0, 0, 0, 0, &omspec_place::land, mfb(OMS_FLAG_BLOB)}, -{ot_hive, 0, 50, 10, -1, mcat_bee, 20, 60, 2, 4, - &omspec_place::forest, mfb(OMS_FLAG_3X3)}, +{ot_hive, 0, 0, 10, -1, mcat_bee, 20, 60, 2, 4, //Oddzball No Bee Hives + &omspec_place::never, mfb(OMS_FLAG_3X3)}, {ot_house_north, 0,100, 0, -1, mcat_null, 0, 0, 0, 0, &omspec_place::by_highway, mfb(OMS_FLAG_ROTATE_ROAD)}, @@ -448,8 +448,8 @@ const overmap_special overmap_specials[NUM_OMSPECS] = { {ot_house_north, 0, 50, 20, -1, mcat_null, 0, 0, 0, 0, // Woods cabin &omspec_place::forest, mfb(OMS_FLAG_ROTATE_RANDOM)|mfb(OMS_FLAG_ROTATE_ROAD)}, -{ot_temple_stairs, 0, 3, 20, -1, mcat_null, 0, 0, 0, 0, - &omspec_place::forest, 0}, +{ot_temple_stairs, 0, 0, 20, -1, mcat_null, 0, 0, 0, 0, + &omspec_place::never, 0}, {ot_lab_stairs, 0, 30, 8, -1, mcat_null, 0, 0, 0, 0, &omspec_place::land, mfb(OMS_FLAG_ROAD)}, @@ -486,20 +486,20 @@ const overmap_special overmap_specials[NUM_OMSPECS] = { &omspec_place::wilderness, mfb(OMS_FLAG_PARKING_LOT)}, // Terrain MIN MAX DISTANCE -{ot_anthill, 0, 30, 10, -1, mcat_ant, 10, 30, 1000, 2000, - &omspec_place::wilderness, 0}, +{ot_anthill, 0, 0, 10, -1, mcat_ant, 10, 30, 1000, 2000, //Oddzball-No Anthills + &omspec_place::never, 0}, {ot_spider_pit, 0,500, 0, -1, mcat_null, 0, 0, 0, 0, &omspec_place::forest, 0}, -{ot_slimepit, 0, 4, 0, -1, mcat_goo, 2, 10, 100, 200, - &omspec_place::land, 0}, +{ot_slimepit, 0, 0, 0, -1, mcat_goo, 2, 10, 100, 200, //Oddzball-No Slimes + &omspec_place::never, 0}, -{ot_fungal_bloom, 0, 3, 5, -1, mcat_fungi, 600, 1200, 30, 50, - &omspec_place::wilderness, 0}, +{ot_fungal_bloom, 0, 0, 5, -1, mcat_fungi, 600, 1200, 30, 50, //Oddzball-No Fungal + &omspec_place::never, 0}, -{ot_triffid_grove, 0, 4, 0, -1, mcat_triffid, 800, 1300, 12, 20, - &omspec_place::forest, 0}, +{ot_triffid_grove, 0, 0, 0, -1, mcat_triffid, 800, 1300, 12, 20, //Oddzball-No Triffids + &omspec_place::never, 0}, {ot_river_center, 0, 10, 10, -1, mcat_null, 0, 0, 0, 0, &omspec_place::always, mfb(OMS_FLAG_BLOB)}, diff --git a/overmap.cpp b/overmap.cpp index 427fe5341097d..9da9482e927e3 100644 --- a/overmap.cpp +++ b/overmap.cpp @@ -26,7 +26,7 @@ #define STREETCHANCE 2 #define NUM_FOREST 250 #define TOP_HIWAY_DIST 140 -#define MIN_ANT_SIZE 8 +#define MIN_ANT_SIZE 8 //Oddzball- Edit to change chance of stuff on map? #define MAX_ANT_SIZE 20 #define MIN_GOO_SIZE 1 #define MAX_GOO_SIZE 2 @@ -1374,8 +1374,8 @@ void overmap::put_buildings(int x, int y, int dir, city town) int ychange = dir % 2, xchange = (dir + 1) % 2; for (int i = -1; i <= 1; i += 2) { if ((ter(x+i*xchange, y+i*ychange) == ot_field) && !one_in(STREETCHANCE)) { - if (rng(0, 99) > 80 * dist(x,y,town.x,town.y) / town.s) - ter(x+i*xchange, y+i*ychange) = shop(((dir%2)-i)%4); + if (rng(0, 99) > 80 * dist(x,y,town.x,town.y) / town.s)//Oddzball-Shop generation chance smaller is better + ter(x+i*xchange, y+i*ychange) = shop(((dir%2)-i)%4); else { if (rng(0, 99) > 130 * dist(x, y, town.x, town.y) / town.s) ter(x+i*xchange, y+i*ychange) = ot_park; diff --git a/pldata.h b/pldata.h index d866dc3fda56a..ad9b3b1e2b400 100644 --- a/pldata.h +++ b/pldata.h @@ -37,7 +37,7 @@ enum dis_type { DI_BOOMERED, DI_SAP, DI_SPORES, DI_FUNGUS, DI_SLIMED, DI_DEAF, DI_BLIND, DI_LYING_DOWN, DI_SLEEP, - DI_POISON, DI_BADPOISON, DI_FOODPOISON, DI_SHAKES, + DI_POISON, DI_BLEED, DI_BADPOISON, DI_FOODPOISON, DI_SHAKES, DI_DERMATIK, DI_FORMICATION, DI_WEBBED, DI_RAT, diff --git a/ranged.cpp b/ranged.cpp index 9ca90ec2d6532..da7fc7eee2c5c 100644 --- a/ranged.cpp +++ b/ranged.cpp @@ -11,7 +11,7 @@ int time_to_fire(player &p, it_gun* firing); int recoil_add(player &p); -void make_gun_sound_effect(game *g, player &p, bool burst, item* weapon); +void make_gun_sound_effect(game *g, player &p, bool burst, item* weapon); //Oddzball-Dont make noise till gun is actually fired! int calculate_range(player &p, int tarx, int tary); double calculate_missed_by(player &p, int trange, item* weapon); void shoot_monster(game *g, player &p, monster &mon, int &dam, double goodhit, item* weapon); @@ -113,7 +113,7 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, debugmsg("game::fire() - num_shots = 0!"); // Make a sound at our location - Zombies will chase it - make_gun_sound_effect(this, p, burst, weapon); + /*make_gun_sound_effect(this, p, burst, weapon);*/ //Oddzball-Oops, wrong one. // Set up a timespec for use in the nanosleep function below timespec ts; ts.tv_sec = 0; @@ -135,7 +135,7 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, bool missed = false; int tart; - for (int curshot = 0; curshot < num_shots; curshot++) { + for (int curshot = 0; curshot < num_shots; curshot++) { //Oddzball-Need to close this ********************** // Burst-fire weapons allow us to pick a new target after killing the first if (curshot > 0 && (mon_at(tarx, tary) == -1 || z[mon_at(tarx, tary)].hp <= 0)) { @@ -219,7 +219,11 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, weapon->charges -= 100; else weapon->charges--; - +if (one_in(100)) { + add_msg("Your weapon misfired!");} //Oddzball-Misfire! + +else { + make_gun_sound_effect(this, p, burst, weapon); int trange = calculate_range(p, tarx, tary); double missed_by = calculate_missed_by(p, trange, weapon); // Calculate a penalty based on the monster's speed @@ -230,7 +234,7 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, if (monster_speed_penalty < 1.) monster_speed_penalty = 1.; } - + if (curshot > 0) { if (recoil_add(p) % 2 == 1) p.recoil++; @@ -239,7 +243,7 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, p.recoil += recoil_add(p); if (missed_by >= 1.) { -// We missed D: +// We missed D: // Shoot a random nearby space? tarx += rng(0 - int(sqrt(double(missed_by))), int(sqrt(double(missed_by)))); tary += rng(0 - int(sqrt(double(missed_by))), int(sqrt(double(missed_by)))); @@ -350,6 +354,7 @@ void game::fire(player &p, int tarx, int tary, std::vector &trajectory, (curammo->m1 != WOOD && !one_in(15)) )) m.add_item(lastx, lasty, ammotmp); } + } //Oddzball-Inside close if (weapon->num_charges() == 0) weapon->curammo = NULL; @@ -713,37 +718,37 @@ int time_to_fire(player &p, it_gun* firing) int time = 0; if (firing->skill_used == Skill::skill("pistol")) { if (p.skillLevel("pistol") > 6) - time = 10; - else + time = 10; + else time = (80 - 10 * p.skillLevel("pistol").level()); } else if (firing->skill_used == Skill::skill("shotgun")) { if (p.skillLevel("shotgun") > 3) - time = 70; - else + time = 70; + else time = (150 - 25 * p.skillLevel("shotgun").level()); } else if (firing->skill_used == Skill::skill("smg")) { if (p.skillLevel("smg") > 5) - time = 20; - else + time = 20; + else time = (80 - 10 * p.skillLevel("smg").level()); } else if (firing->skill_used == Skill::skill("rifle")) { if (p.skillLevel("rifle") > 8) - time = 30; - else + time = 30; + else time = (150 - 15 * p.skillLevel("rifle").level()); } else if (firing->skill_used == Skill::skill("archery")) { if (p.skillLevel("archery") > 8) - time = 20; - else + time = 20; + else time = (220 - 25 * p.skillLevel("archery").level()); } else if (firing->skill_used == Skill::skill("launcher")) { if (p.skillLevel("launcher") > 8) - time = 30; - else + time = 30; + else time = (200 - 20 * p.skillLevel("launcher").level()); } else { debugmsg("Why is shooting %s using %s skill?", (firing->name).c_str(), firing->skill_used->name().c_str()); - time = 0; + time = 0; } return time; @@ -768,7 +773,7 @@ void make_gun_sound_effect(game *g, player &p, bool burst, item* weapon) if (burst) gunsound = "P-p-p-pow!"; else - gunsound = "blam!"; + gunsound = "blam!"; //Oddzball-Gunshsot noise before actually firing? WTF...*sigh* } else { if (burst) gunsound = "Kaboom!!";