@@ -393,122 +393,41 @@ void spell_type::load( const JsonObject &jo, std::string_view src )
393
393
if ( field_input != " none" ) {
394
394
field = field_type_id ( field_input );
395
395
}
396
- if ( !was_loaded || jo.has_member ( " field_chance" ) ) {
397
- field_chance = get_dbl_or_var ( jo, " field_chance" , false , field_chance_default );
398
- }
399
- if ( !was_loaded || jo.has_member ( " min_field_intensity" ) ) {
400
- min_field_intensity = get_dbl_or_var ( jo, " min_field_intensity" , false ,
401
- min_field_intensity_default );
402
- }
403
- if ( !was_loaded || jo.has_member ( " max_field_intensity" ) ) {
404
- max_field_intensity = get_dbl_or_var ( jo, " max_field_intensity" , false ,
405
- max_field_intensity_default );
406
- }
407
- if ( !was_loaded || jo.has_member ( " field_intensity_increment" ) ) {
408
- field_intensity_increment = get_dbl_or_var ( jo, " field_intensity_increment" , false ,
409
- field_intensity_increment_default );
410
- }
411
- if ( !was_loaded || jo.has_member ( " field_intensity_variance" ) ) {
412
- field_intensity_variance = get_dbl_or_var ( jo, " field_intensity_variance" , false ,
413
- field_intensity_variance_default );
414
- }
415
-
416
- if ( !was_loaded || jo.has_member ( " min_accuracy" ) ) {
417
- min_accuracy = get_dbl_or_var ( jo, " min_accuracy" , false , min_accuracy_default );
418
- }
419
- if ( !was_loaded || jo.has_member ( " accuracy_increment" ) ) {
420
- accuracy_increment = get_dbl_or_var ( jo, " accuracy_increment" , false ,
421
- accuracy_increment_default );
422
- }
423
- if ( !was_loaded || jo.has_member ( " max_accuracy" ) ) {
424
- max_accuracy = get_dbl_or_var ( jo, " max_accuracy" , false , max_accuracy_default );
425
- }
426
- if ( !was_loaded || jo.has_member ( " min_damage" ) ) {
427
- min_damage = get_dbl_or_var ( jo, " min_damage" , false , min_damage_default );
428
- }
429
- if ( !was_loaded || jo.has_member ( " damage_increment" ) ) {
430
- damage_increment = get_dbl_or_var ( jo, " damage_increment" , false ,
431
- damage_increment_default );
432
- }
433
- if ( !was_loaded || jo.has_member ( " max_damage" ) ) {
434
- max_damage = get_dbl_or_var ( jo, " max_damage" , false , max_damage_default );
435
- }
436
-
437
- if ( !was_loaded || jo.has_member ( " min_range" ) ) {
438
- min_range = get_dbl_or_var ( jo, " min_range" , false , min_range_default );
439
- }
440
- if ( !was_loaded || jo.has_member ( " range_increment" ) ) {
441
- range_increment = get_dbl_or_var ( jo, " range_increment" , false , range_increment_default );
442
- }
443
- if ( !was_loaded || jo.has_member ( " max_range" ) ) {
444
- max_range = get_dbl_or_var ( jo, " max_range" , false , max_range_default );
445
- }
446
-
447
- if ( !was_loaded || jo.has_member ( " min_aoe" ) ) {
448
- min_aoe = get_dbl_or_var ( jo, " min_aoe" , false , min_aoe_default );
449
- }
450
- if ( !was_loaded || jo.has_member ( " aoe_increment" ) ) {
451
- aoe_increment = get_dbl_or_var ( jo, " aoe_increment" , false , aoe_increment_default );
452
- }
453
- if ( !was_loaded || jo.has_member ( " max_aoe" ) ) {
454
- max_aoe = get_dbl_or_var ( jo, " max_aoe" , false , max_aoe_default );
455
- }
456
- if ( !was_loaded || jo.has_member ( " min_dot" ) ) {
457
- min_dot = get_dbl_or_var ( jo, " min_dot" , false , min_dot_default );
458
- }
459
- if ( !was_loaded || jo.has_member ( " dot_increment" ) ) {
460
- dot_increment = get_dbl_or_var ( jo, " dot_increment" , false , dot_increment_default );
461
- }
462
- if ( !was_loaded || jo.has_member ( " max_dot" ) ) {
463
- max_dot = get_dbl_or_var ( jo, " max_dot" , false , max_dot_default );
464
- }
465
-
466
- if ( !was_loaded || jo.has_member ( " min_duration" ) ) {
467
- min_duration = get_dbl_or_var ( jo, " min_duration" , false , min_duration_default );
468
- }
469
- if ( !was_loaded || jo.has_member ( " duration_increment" ) ) {
470
- duration_increment = get_dbl_or_var ( jo, " duration_increment" , false ,
471
- duration_increment_default );
472
- }
473
- if ( !was_loaded || jo.has_member ( " max_duration" ) ) {
474
- max_duration = get_dbl_or_var ( jo, " max_duration" , false , max_duration_default );
475
- }
476
-
477
- if ( !was_loaded || jo.has_member ( " min_pierce" ) ) {
478
- min_pierce = get_dbl_or_var ( jo, " min_pierce" , false , min_pierce_default );
479
- }
480
- if ( !was_loaded || jo.has_member ( " pierce_increment" ) ) {
481
- pierce_increment = get_dbl_or_var ( jo, " pierce_increment" , false ,
482
- pierce_increment_default );
483
- }
484
- if ( !was_loaded || jo.has_member ( " max_pierce" ) ) {
485
- max_pierce = get_dbl_or_var ( jo, " max_pierce" , false , max_pierce_default );
486
- }
487
-
488
- if ( !was_loaded || jo.has_member ( " min_bash_scaling" ) ) {
489
- min_bash_scaling = get_dbl_or_var ( jo, " min_bash_scaling" , false , min_bash_scaling_default );
490
- }
491
- if ( !was_loaded || jo.has_member ( " bash_scaling_increment" ) ) {
492
- bash_scaling_increment = get_dbl_or_var ( jo, " bash_scaling_increment" , false ,
493
- bash_scaling_increment_default );
494
- }
495
- if ( !was_loaded || jo.has_member ( " max_bash_scaling" ) ) {
496
- max_bash_scaling = get_dbl_or_var ( jo, " max_bash_scaling" , false , max_bash_scaling_default );
497
- }
498
-
499
- if ( !was_loaded || jo.has_member ( " base_energy_cost" ) ) {
500
- base_energy_cost = get_dbl_or_var ( jo, " base_energy_cost" , false ,
501
- base_energy_cost_default );
502
- }
503
- if ( jo.has_member ( " final_energy_cost" ) ) {
504
- final_energy_cost = get_dbl_or_var ( jo, " final_energy_cost" );
505
- } else if ( !was_loaded ) {
506
- final_energy_cost = base_energy_cost;
507
- }
508
- if ( !was_loaded || jo.has_member ( " energy_increment" ) ) {
509
- energy_increment = get_dbl_or_var ( jo, " energy_increment" , false ,
510
- energy_increment_default );
511
- }
396
+ optional ( jo, was_loaded, " field_chance" , field_chance, field_chance_default );
397
+ optional ( jo, was_loaded, " min_field_intensity" , min_field_intensity, min_field_intensity_default );
398
+ optional ( jo, was_loaded, " max_field_intensity" , max_field_intensity, max_field_intensity_default );
399
+ optional ( jo, was_loaded, " field_intensity_increment" , field_intensity_increment,
400
+ field_intensity_increment_default );
401
+ optional ( jo, was_loaded, " field_intensity_variance" , field_intensity_variance,
402
+ field_intensity_variance_default );
403
+ optional ( jo, was_loaded, " min_accuracy" , min_accuracy, min_accuracy_default );
404
+ optional ( jo, was_loaded, " accuracy_increment" , accuracy_increment, accuracy_increment_default );
405
+ optional ( jo, was_loaded, " max_accuracy" , max_accuracy, max_accuracy_default );
406
+ optional ( jo, was_loaded, " min_damage" , min_damage, min_damage_default );
407
+ optional ( jo, was_loaded, " damage_increment" , damage_increment, damage_increment_default );
408
+ optional ( jo, was_loaded, " max_damage" , max_damage, max_damage_default );
409
+ optional ( jo, was_loaded, " min_range" , min_range, min_range_default );
410
+ optional ( jo, was_loaded, " range_increment" , range_increment, range_increment_default );
411
+ optional ( jo, was_loaded, " max_range" , max_range, max_range_default );
412
+ optional ( jo, was_loaded, " min_aoe" , min_aoe, min_aoe_default );
413
+ optional ( jo, was_loaded, " aoe_increment" , aoe_increment, aoe_increment_default );
414
+ optional ( jo, was_loaded, " max_aoe" , max_aoe, max_aoe_default );
415
+ optional ( jo, was_loaded, " min_dot" , min_dot, min_dot_default );
416
+ optional ( jo, was_loaded, " dot_increment" , dot_increment, dot_increment_default );
417
+ optional ( jo, was_loaded, " max_dot" , max_dot, max_dot_default );
418
+ optional ( jo, was_loaded, " min_duration" , min_duration, min_duration_default );
419
+ optional ( jo, was_loaded, " duration_increment" , duration_increment, duration_increment_default );
420
+ optional ( jo, was_loaded, " max_duration" , max_duration, max_duration_default );
421
+ optional ( jo, was_loaded, " min_pierce" , min_pierce, min_pierce_default );
422
+ optional ( jo, was_loaded, " pierce_increment" , pierce_increment, pierce_increment_default );
423
+ optional ( jo, was_loaded, " max_pierce" , max_pierce, max_pierce_default );
424
+ optional ( jo, was_loaded, " min_bash_scaling" , min_bash_scaling, min_bash_scaling_default );
425
+ optional ( jo, was_loaded, " bash_scaling_increment" , bash_scaling_increment,
426
+ bash_scaling_increment_default );
427
+ optional ( jo, was_loaded, " max_bash_scaling" , max_bash_scaling, max_bash_scaling_default );
428
+ optional ( jo, was_loaded, " base_energy_cost" , base_energy_cost, base_energy_cost_default );
429
+ optional ( jo, was_loaded, " final_energy_cost" , final_energy_cost, base_energy_cost );
430
+ optional ( jo, was_loaded, " energy_increment" , energy_increment, energy_increment_default );
512
431
513
432
optional ( jo, was_loaded, " spell_class" , spell_class, spell_class_default );
514
433
if ( jo.has_string ( " energy_source" ) ) {
@@ -529,33 +448,15 @@ void spell_type::load( const JsonObject &jo, std::string_view src )
529
448
debugmsg ( " spell id:%s has a get_level_formula_id or exp_for_level_formula_id but not the other! This breaks the calculations for xp/level!" ,
530
449
id.c_str () );
531
450
}
532
- if ( !was_loaded || jo.has_member ( " difficulty" ) ) {
533
- difficulty = get_dbl_or_var ( jo, " difficulty" , false , difficulty_default );
534
- }
535
- if ( !was_loaded || jo.has_member ( " multiple_projectiles" ) ) {
536
- multiple_projectiles = get_dbl_or_var ( jo, " multiple_projectiles" , false ,
537
- multiple_projectiles_default );
538
- }
539
- if ( !was_loaded || jo.has_member ( " max_level" ) ) {
540
- max_level = get_dbl_or_var ( jo, " max_level" , false , max_level_default );
541
- }
542
-
543
- if ( !was_loaded || jo.has_member ( " base_casting_time" ) ) {
544
- base_casting_time = get_dbl_or_var ( jo, " base_casting_time" , false ,
545
- base_casting_time_default );
546
- }
547
- if ( jo.has_member ( " final_casting_time" ) ) {
548
- final_casting_time = get_dbl_or_var ( jo, " final_casting_time" );
549
- } else if ( !was_loaded ) {
550
- final_casting_time = base_casting_time;
551
- }
552
- if ( !was_loaded || jo.has_member ( " max_damage" ) ) {
553
- max_damage = get_dbl_or_var ( jo, " max_damage" , false , max_damage_default );
554
- }
555
- if ( !was_loaded || jo.has_member ( " casting_time_increment" ) ) {
556
- casting_time_increment = get_dbl_or_var ( jo, " casting_time_increment" , false ,
557
- casting_time_increment_default );
558
- }
451
+ optional ( jo, was_loaded, " difficulty" , difficulty, difficulty_default );
452
+ optional ( jo, was_loaded, " multiple_projectiles" , multiple_projectiles,
453
+ multiple_projectiles_default );
454
+ optional ( jo, was_loaded, " max_level" , max_level, max_level_default );
455
+ optional ( jo, was_loaded, " base_casting_time" , base_casting_time, base_casting_time_default );
456
+ optional ( jo, was_loaded, " final_casting_time" , final_casting_time, base_casting_time );
457
+ optional ( jo, was_loaded, " max_damage" , max_damage, max_damage_default );
458
+ optional ( jo, was_loaded, " casting_time_increment" , casting_time_increment,
459
+ casting_time_increment_default );
559
460
560
461
for ( const JsonMember member : jo.get_object ( " learn_spells" ) ) {
561
462
learn_spells.insert ( std::pair<std::string, int >( member.name (), member.get_int () ) );
0 commit comments