2017-02-09 00:00:35 +00:00
module TS.SpaceTac.Specs {
2015-02-06 00:00:00 +00:00
describe ( "Equipment" , ( ) = > {
2017-04-18 22:55:59 +00:00
it ( "generates a full name" , function ( ) {
let equipment = new Equipment ( SlotType . Weapon , "rayofdeath" ) ;
expect ( equipment . getFullName ( ) ) . toEqual ( "Level 1 rayofdeath" ) ;
equipment . name = "Ray of Death" ;
expect ( equipment . getFullName ( ) ) . toEqual ( "Level 1 Ray of Death" ) ;
equipment . quality = EquipmentQuality . LEGENDARY ;
expect ( equipment . getFullName ( ) ) . toEqual ( "Level 1 Legendary Ray of Death" ) ;
} ) ;
2017-01-17 00:02:38 +00:00
it ( "checks capabilities requirements" , function ( ) {
2015-02-06 00:00:00 +00:00
var equipment = new Equipment ( ) ;
var ship = new Ship ( ) ;
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( true ) ;
2017-02-07 19:15:21 +00:00
equipment . requirements [ "skill_time" ] = 2 ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( false ) ;
2017-02-07 19:15:21 +00:00
ship . attributes . skill_time . set ( 1 ) ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( false ) ;
2017-02-07 19:15:21 +00:00
ship . attributes . skill_time . set ( 2 ) ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( true ) ;
2017-02-07 19:15:21 +00:00
ship . attributes . skill_time . set ( 3 ) ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( true ) ;
// Second requirement
2017-02-07 19:15:21 +00:00
equipment . requirements [ "skill_material" ] = 3 ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( false ) ;
2017-02-07 19:15:21 +00:00
ship . attributes . skill_material . set ( 4 ) ;
2015-02-06 00:00:00 +00:00
expect ( equipment . canBeEquipped ( ship ) ) . toBe ( true ) ;
} ) ;
2017-01-17 00:02:38 +00:00
it ( "generates a description of the effects" , function ( ) {
2017-04-18 19:51:23 +00:00
let equipment = new Equipment ( ) ;
2017-04-18 22:55:59 +00:00
expect ( equipment . getEffectsDescription ( ) ) . toEqual ( "does nothing" ) ;
2017-01-17 00:02:38 +00:00
2017-04-18 19:51:23 +00:00
let action = new FireWeaponAction ( equipment , 1 , 200 , 0 , [
new DamageEffect ( 50 )
] ) ;
equipment . action = action ;
2017-04-18 22:55:59 +00:00
expect ( equipment . getEffectsDescription ( ) ) . toEqual ( "Fire (power usage 1, max range 200km):\n- do 50 damage on target" ) ;
2017-04-18 19:51:23 +00:00
action . blast = 20 ;
2017-04-18 22:55:59 +00:00
expect ( equipment . getEffectsDescription ( ) ) . toEqual ( "Fire (power usage 1, max range 200km):\n- do 50 damage in 20km radius" ) ;
2017-04-18 19:51:23 +00:00
action . blast = 0 ;
action . effects . push ( new StickyEffect ( new AttributeLimitEffect ( "shield_capacity" , 200 ) , 3 ) ) ;
2017-04-18 22:55:59 +00:00
expect ( equipment . getEffectsDescription ( ) ) . toEqual ( "Fire (power usage 1, max range 200km):\n- do 50 damage on target\n- limit shield capacity to 200 for 3 turns on target" ) ;
2017-04-18 19:51:23 +00:00
} ) ;
it ( "gets a minimal level, based on skills requirements" , function ( ) {
let equipment = new Equipment ( ) ;
expect ( equipment . getMinimumLevel ( ) ) . toBe ( 1 ) ;
equipment . requirements [ "skill_human" ] = 10 ;
expect ( equipment . getMinimumLevel ( ) ) . toBe ( 1 ) ;
equipment . requirements [ "skill_time" ] = 1 ;
expect ( equipment . getMinimumLevel ( ) ) . toBe ( 2 ) ;
2017-01-17 00:02:38 +00:00
2017-04-18 19:51:23 +00:00
equipment . requirements [ "skill_gravity" ] = 2 ;
expect ( equipment . getMinimumLevel ( ) ) . toBe ( 2 ) ;
2017-01-17 00:02:38 +00:00
2017-04-18 19:51:23 +00:00
equipment . requirements [ "skill_electronics" ] = 4 ;
expect ( equipment . getMinimumLevel ( ) ) . toBe ( 3 ) ;
2017-01-17 00:02:38 +00:00
} ) ;
2015-02-06 00:00:00 +00:00
} ) ;
}