diff --git a/src/Core/OOEquipmentType.h b/src/Core/OOEquipmentType.h index 1a1a67fd..6eaf7371 100644 --- a/src/Core/OOEquipmentType.h +++ b/src/Core/OOEquipmentType.h @@ -142,6 +142,7 @@ SOFTWARE. // weapon properties - (BOOL) isTurretLaser; - (BOOL) isMiningLaser; +- (NSDictionary *) weaponInfo; - (GLfloat) weaponRange; - (GLfloat) weaponEnergyUse; - (GLfloat) weaponDamage; diff --git a/src/Core/OOEquipmentType.m b/src/Core/OOEquipmentType.m index 87e94c6b..eefd5db0 100644 --- a/src/Core/OOEquipmentType.m +++ b/src/Core/OOEquipmentType.m @@ -630,6 +630,12 @@ static NSDictionary *sMissilesRegistry = nil; } +- (NSDictionary *) weaponInfo +{ + return _weaponInfo; +} + + - (GLfloat) weaponRange { return [_weaponInfo oo_floatForKey:@"range" defaultValue:12500.0]; diff --git a/src/Core/Scripting/OOJSEquipmentInfo.m b/src/Core/Scripting/OOJSEquipmentInfo.m index 6c364669..5e109011 100644 --- a/src/Core/Scripting/OOJSEquipmentInfo.m +++ b/src/Core/Scripting/OOJSEquipmentInfo.m @@ -77,7 +77,8 @@ enum kEquipmentInfo_requiresNonFullFuel, kEquipmentInfo_scriptInfo, // arbitrary data for scripts, dictionary, read-only kEquipmentInfo_scriptName, - kEquipmentInfo_techLevel + kEquipmentInfo_techLevel, + kEquipmentInfo_weaponInfo }; @@ -117,6 +118,7 @@ static JSPropertySpec sEquipmentInfoProperties[] = { "scriptInfo", kEquipmentInfo_scriptInfo, OOJS_PROP_READONLY_CB }, { "scriptName", kEquipmentInfo_scriptName, OOJS_PROP_READONLY_CB }, { "techLevel", kEquipmentInfo_techLevel, OOJS_PROP_READONLY_CB }, + { "weaponInfo", kEquipmentInfo_weaponInfo, OOJS_PROP_READONLY_CB }, { 0 } }; @@ -390,6 +392,11 @@ static JSBool EquipmentInfoGetProperty(JSContext *context, JSObject *this, jsid if (result == nil) result = @""; break; + case kEquipmentInfo_weaponInfo: + result = [eqType weaponInfo]; + if (result == nil) result = [NSDictionary dictionary]; // empty rather than null + break; + default: OOJSReportBadPropertySelector(context, this, propID, sEquipmentInfoProperties); return NO;