Skip to content

Commit

Permalink
Drop archery damage by 5x and increase archery crit damage by 5x
Browse files Browse the repository at this point in the history
  • Loading branch information
kevingranade committed Apr 8, 2020
1 parent 3e8ab06 commit 42a8c53
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 29 deletions.
38 changes: 25 additions & 13 deletions data/json/items/ranged/archery.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"dispersion": 250,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_2" ]
},
{
Expand All @@ -39,6 +40,7 @@
"dispersion": 150,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_30" ]
},
{
Expand Down Expand Up @@ -104,6 +106,7 @@
"dispersion": 110,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_25" ]
},
{
Expand All @@ -125,6 +128,7 @@
"dispersion": 150,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_6" ]
},
{
Expand All @@ -146,6 +150,7 @@
"dispersion": 150,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_35", "NOGIB" ]
},
{
Expand All @@ -169,6 +174,7 @@
"loudness": 0,
"count": 10,
"show_stats": true,
"critical_multiplier": 10,
"effects": [ "RECOVER_8" ]
},
{
Expand All @@ -192,6 +198,7 @@
"loudness": 0,
"count": 10,
"show_stats": true,
"critical_multiplier": 10,
"effects": [ "RECOVER_20" ]
},
{
Expand All @@ -216,6 +223,7 @@
"dispersion": 75,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_35" ]
},
{
Expand All @@ -240,6 +248,7 @@
"dispersion": 75,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_40" ]
},
{
Expand All @@ -263,6 +272,7 @@
"dispersion": 75,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_45", "NOGIB" ]
},
{
Expand All @@ -286,6 +296,7 @@
"loudness": 0,
"count": 10,
"stack_size": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_30" ]
},
{
Expand Down Expand Up @@ -344,6 +355,7 @@
"dispersion": 285,
"loudness": 0,
"count": 5,
"critical_multiplier": 10,
"effects": [ "IGNITE" ]
},
{
Expand All @@ -368,7 +380,7 @@
"price_postapoc": 50,
"bashing": 6,
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 },
"ranged_damage": 7,
"ranged_damage": 1,
"range": 8,
"dispersion": 1250,
"durability": 4,
Expand Down Expand Up @@ -396,7 +408,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 },
"reload_noise_volume": 3,
"loudness": 6,
"ranged_damage": 20,
"ranged_damage": 4,
"range": 10,
"dispersion": 1000,
"durability": 6,
Expand Down Expand Up @@ -425,7 +437,7 @@
"to_hit": 1,
"reload_noise_volume": 3,
"loudness": 10,
"ranged_damage": 50,
"ranged_damage": 10,
"range": 18,
"dispersion": 850,
"durability": 6,
Expand All @@ -447,7 +459,7 @@
"description": "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by very strong archers. Currently set to a high weight, and ready to cause some real damage - if you can draw it.",
"//": "80 lb draw weight, efficient, 0.62 slugs of momentum with a 30g arrow.",
"min_strength": 11,
"ranged_damage": 61,
"ranged_damage": 12,
"use_action": {
"menu_text": "Loosen Limbs",
"type": "transform",
Expand All @@ -464,7 +476,7 @@
"description": "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by average archers. Currently set to a low weight, making it much easier to draw.",
"//": "40 lb draw weight, efficient, 0.45 slugs of momentum with a 30g arrow.",
"min_strength": 7,
"ranged_damage": 35,
"ranged_damage": 7,
"use_action": {
"menu_text": "Tighten Limbs",
"type": "transform",
Expand Down Expand Up @@ -495,7 +507,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 },
"reload_noise_volume": 3,
"loudness": 6,
"ranged_damage": 38,
"ranged_damage": 8,
"range": 12,
"dispersion": 950,
"durability": 6,
Expand Down Expand Up @@ -524,7 +536,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 },
"reload_noise_volume": 3,
"loudness": 8,
"ranged_damage": 28,
"ranged_damage": 6,
"range": 14,
"dispersion": 850,
"durability": 6,
Expand Down Expand Up @@ -553,7 +565,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 },
"reload_noise_volume": 3,
"loudness": 6,
"ranged_damage": 29,
"ranged_damage": 6,
"range": 12,
"dispersion": 950,
"durability": 6,
Expand Down Expand Up @@ -582,7 +594,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 },
"reload_noise_volume": 3,
"loudness": 8,
"ranged_damage": 58,
"ranged_damage": 10,
"range": 14,
"dispersion": 850,
"durability": 6,
Expand Down Expand Up @@ -610,7 +622,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 },
"reload_noise_volume": 3,
"loudness": 8,
"ranged_damage": 23,
"ranged_damage": 5,
"range": 18,
"dispersion": 1000,
"durability": 6,
Expand All @@ -632,7 +644,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 7, "material_thickness": 2, "encumbrance": 25 },
"durability": 8,
"loudness": 16,
"ranged_damage": 44,
"ranged_damage": 11,
"range": 20
},
{
Expand All @@ -657,7 +669,7 @@
"reload_noise_volume": 4,
"loudness": 20,
"durability": 8,
"ranged_damage": 43,
"ranged_damage": 11,
"range": 22,
"dispersion": 1000,
"clip_size": 1,
Expand Down Expand Up @@ -685,7 +697,7 @@
"armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 },
"reload_noise_volume": 3,
"loudness": 8,
"ranged_damage": 28,
"ranged_damage": 6,
"range": 18,
"dispersion": 950,
"durability": 6,
Expand Down
22 changes: 16 additions & 6 deletions data/json/items/ranged/crossbows.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"dispersion": 250,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_2" ]
},
{
Expand All @@ -37,6 +38,7 @@
"dispersion": 180,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_6" ]
},
{
Expand Down Expand Up @@ -79,6 +81,7 @@
"loudness": 0,
"count": 10,
"show_stats": true,
"critical_multiplier": 10,
"effects": [ "RECOVER_8" ]
},
{
Expand All @@ -100,6 +103,7 @@
"dispersion": 110,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_25" ]
},
{
Expand All @@ -121,6 +125,7 @@
"dispersion": 100,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_30" ]
},
{
Expand Down Expand Up @@ -163,6 +168,7 @@
"loudness": 0,
"count": 10,
"show_stats": true,
"critical_multiplier": 10,
"effects": [ "RECOVER_20" ]
},
{
Expand All @@ -185,6 +191,7 @@
"dispersion": 70,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_35" ]
},
{
Expand All @@ -208,6 +215,7 @@
"dispersion": 65,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_40" ]
},
{
Expand All @@ -230,6 +238,7 @@
"dispersion": 70,
"loudness": 0,
"count": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_45", "NOGIB" ]
},
{
Expand All @@ -253,6 +262,7 @@
"loudness": 0,
"count": 10,
"stack_size": 10,
"critical_multiplier": 10,
"effects": [ "RECOVER_30" ]
},
{
Expand Down Expand Up @@ -332,7 +342,7 @@
"weight": "900 g",
"volume": "500 ml",
"bashing": 4,
"ranged_damage": 13,
"ranged_damage": 3,
"range": 6,
"dispersion": 400,
"durability": 6,
Expand Down Expand Up @@ -371,7 +381,7 @@
"bashing": 11,
"to_hit": 1,
"loudness": 10,
"ranged_damage": 19,
"ranged_damage": 4,
"range": 9,
"dispersion": 375,
"durability": 6,
Expand Down Expand Up @@ -400,7 +410,7 @@
"volume": "1750 ml",
"bashing": 11,
"to_hit": 1,
"ranged_damage": 27,
"ranged_damage": 6,
"range": 16,
"loudness": 8,
"dispersion": 350,
Expand Down Expand Up @@ -440,7 +450,7 @@
"price_postapoc": 6000,
"bashing": 11,
"to_hit": 1,
"ranged_damage": 64,
"ranged_damage": 13,
"range": 22,
"loudness": 12,
"dispersion": 325,
Expand Down Expand Up @@ -479,7 +489,7 @@
"price_postapoc": 4000,
"bashing": 20,
"to_hit": -1,
"ranged_damage": 30,
"ranged_damage": 6,
"range": 30,
"dispersion": 300,
"recoil": 30,
Expand Down Expand Up @@ -508,7 +518,7 @@
"price_postapoc": 6000,
"bashing": 13,
"to_hit": -1,
"ranged_damage": 5,
"ranged_damage": 1,
"range": 8,
"dispersion": 500,
"recoil": 30,
Expand Down
17 changes: 9 additions & 8 deletions src/creature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -628,27 +628,28 @@ void Creature::deal_projectile_attack( Creature *source, dealt_projectile_attack

double damage_mult = 1.0;

const float crit_multiplier = proj.critical_multiplier;
const int max_damage = proj.impact.total_damage();
std::string message;
game_message_type gmtSCTcolor = m_neutral;
if( magic ) {
damage_mult *= rng_float( 0.9, 1.1 );
} else if( goodhit < accuracy_headshot && max_damage > 0.4 * get_hp_max( hp_head ) ) {
} else if( goodhit < accuracy_headshot && max_damage * crit_multiplier > get_hp_max( hp_head ) ) {
message = _( "Headshot!" );
gmtSCTcolor = m_headshot;
damage_mult *= rng_float( 1.95, 2.05 );
damage_mult *= rng_float( 0.95, 1.05 );
damage_mult *= crit_multiplier;
bp_hit = bp_head; // headshot hits the head, of course

} else if( goodhit < accuracy_critical && max_damage > 0.4 * get_hp_max( hp_torso ) ) {
} else if( goodhit < accuracy_critical && max_damage * crit_multiplier > get_hp_max( hp_torso ) ) {
message = _( "Critical!" );
gmtSCTcolor = m_critical;
damage_mult *= rng_float( 1.5, 2.0 );

damage_mult *= rng_float( 0.75, 1.0 );
damage_mult *= crit_multiplier;
} else if( goodhit < accuracy_goodhit ) {
message = _( "Good hit!" );
gmtSCTcolor = m_good;
damage_mult *= rng_float( 1, 1.5 );

damage_mult *= rng_float( 0.5, 0.75 );
damage_mult *= crit_multiplier;
} else if( goodhit < accuracy_standard ) {
damage_mult *= rng_float( 0.5, 1 );

Expand Down
1 change: 1 addition & 0 deletions src/item_factory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1508,6 +1508,7 @@ void Item_factory::load( islot_ammo &slot, const JsonObject &jo, const std::stri
assign( jo, "loudness", slot.loudness, strict, 0 );
assign( jo, "effects", slot.ammo_effects, strict );
assign( jo, "prop_damage", slot.prop_damage, strict );
assign( jo, "critical_multiplier", slot.critical_multiplier, strict );
assign( jo, "show_stats", slot.force_stat_display, strict );
}

Expand Down
Loading

0 comments on commit 42a8c53

Please sign in to comment.