mirror of
https://github.com/l0k1/oprf_assets.git
synced 2024-11-21 15:08:03 +08:00
Sim: Fix that some callsigns could mess up emesary communications.
This commit is contained in:
parent
9684e5e388
commit
641f407599
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -509,10 +509,10 @@ var AIM = {
|
|||||||
if (m.vector_thrust == nil) {
|
if (m.vector_thrust == nil) {
|
||||||
m.vector_thrust = FALSE;
|
m.vector_thrust = FALSE;
|
||||||
}
|
}
|
||||||
if (m.flareResistance == nil) {
|
if (m.flareResistance == nil or !m.gnd_launch) {
|
||||||
m.flareResistance = 0.85;
|
m.flareResistance = 0.85;
|
||||||
}
|
}
|
||||||
if (m.chaffResistance == nil) {
|
if (m.chaffResistance == nil or !m.gnd_launch) {
|
||||||
m.chaffResistance = 0.85;
|
m.chaffResistance = 0.85;
|
||||||
}
|
}
|
||||||
if (m.guidanceLaw == nil) {
|
if (m.guidanceLaw == nil) {
|
||||||
@ -1910,7 +1910,7 @@ var AIM = {
|
|||||||
|
|
||||||
setNewTargetInFlight: func (tagt) {
|
setNewTargetInFlight: func (tagt) {
|
||||||
me.Tgt = tagt;
|
me.Tgt = tagt;
|
||||||
me.callsign = tagt==nil?"Unknown":me.Tgt.get_Callsign();
|
me.callsign = tagt==nil?"Unknown":damage.processCallsign(me.Tgt.get_Callsign());
|
||||||
me.printStatsDetails("Target set to %s", me.callsign);
|
me.printStatsDetails("Target set to %s", me.callsign);
|
||||||
me.newTargetAssigned = tagt==nil?FALSE:TRUE;
|
me.newTargetAssigned = tagt==nil?FALSE:TRUE;
|
||||||
me.t_coord = tagt==nil?nil:me.Tgt.get_Coord();
|
me.t_coord = tagt==nil?nil:me.Tgt.get_Coord();
|
||||||
@ -2543,9 +2543,12 @@ var AIM = {
|
|||||||
|
|
||||||
me.prevGuidance = me.guidance;
|
me.prevGuidance = me.guidance;
|
||||||
|
|
||||||
if (me.counter > -1) {
|
if (me.counter > -1 and !me.ai.getNode("valid").getBoolValue()) {
|
||||||
# TODO: Why is this placed so late? Don't remember.
|
# TODO: Why is this placed so late? Don't remember.
|
||||||
me.ai.getNode("valid").setBoolValue(1);
|
me.ai.getNode("valid").setBoolValue(1);
|
||||||
|
thread.lock(mutexTimer);
|
||||||
|
append(AIM.timerQueue, [me, me.setModelAdded, [], -1]);
|
||||||
|
thread.unlock(mutexTimer);
|
||||||
}
|
}
|
||||||
#############################################################################################################
|
#############################################################################################################
|
||||||
#
|
#
|
||||||
@ -3075,8 +3078,9 @@ var AIM = {
|
|||||||
me.chaffLast = me.chaffNumber;
|
me.chaffLast = me.chaffNumber;
|
||||||
me.chaffTime = getprop("sim/time/elapsed-sec");
|
me.chaffTime = getprop("sim/time/elapsed-sec");
|
||||||
me.aspectDeg = me.aspectToExhaust(me.coord, me.Tgt) / 180;# 0 = viewing engine, 1 = front
|
me.aspectDeg = me.aspectToExhaust(me.coord, me.Tgt) / 180;# 0 = viewing engine, 1 = front
|
||||||
|
me.semi = me.guidance == "semi-radar"?0.5:1;
|
||||||
me.chaffLock = rand() < (1-me.chaffResistance - ((1-me.chaffResistance) * 0.5 * me.aspectDeg));# 50% less chance to be fooled if front aspect
|
me.chaffChance = (1-me.chaffResistance)*me.semi;
|
||||||
|
me.chaffLock = rand() < (me.chaffChance - (me.chaffChance * 0.5 * me.aspectDeg));# 50% less chance to be fooled if front aspect
|
||||||
|
|
||||||
if (me.chaffLock == TRUE) {
|
if (me.chaffLock == TRUE) {
|
||||||
me.printStats(me.type~": Missile locked on chaff from "~me.callsign);
|
me.printStats(me.type~": Missile locked on chaff from "~me.callsign);
|
||||||
@ -4094,6 +4098,9 @@ var AIM = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
me.ai.getNode("valid", 1).setBoolValue(0);
|
me.ai.getNode("valid", 1).setBoolValue(0);
|
||||||
|
thread.lock(mutexTimer);
|
||||||
|
append(AIM.timerQueue, [me, me.setModelRemoved, [], -1]);
|
||||||
|
thread.unlock(mutexTimer);
|
||||||
if (event == "exploded" and !me.inert and wh_mass > 0) {
|
if (event == "exploded" and !me.inert and wh_mass > 0) {
|
||||||
me.animate_explosion(hitGround);
|
me.animate_explosion(hitGround);
|
||||||
me.explodeSound = TRUE;
|
me.explodeSound = TRUE;
|
||||||
@ -4120,7 +4127,7 @@ var AIM = {
|
|||||||
me.printStats(phrase);
|
me.printStats(phrase);
|
||||||
|
|
||||||
if(getprop("payload/armament/msg") and wh_mass > 0){
|
if(getprop("payload/armament/msg") and wh_mass > 0){
|
||||||
var cs = me.testMe.get_Callsign();
|
var cs = damage.processCallsign(me.testMe.get_Callsign());
|
||||||
var cc = me.testMe.get_Coord();
|
var cc = me.testMe.get_Coord();
|
||||||
thread.lock(mutexTimer);
|
thread.lock(mutexTimer);
|
||||||
append(AIM.timerQueue, [AIM, AIM.notifyHit, [explode_coord.alt() - cc.alt(),min_distance,cs,explode_coord.course_to(cc),"mhit1",me.typeID, me.typeLong,0], -1]);
|
append(AIM.timerQueue, [AIM, AIM.notifyHit, [explode_coord.alt() - cc.alt(),min_distance,cs,explode_coord.course_to(cc),"mhit1",me.typeID, me.typeLong,0], -1]);
|
||||||
@ -4134,8 +4141,7 @@ var AIM = {
|
|||||||
var min_distance = geo.aircraft_position().direct_distance_to(explode_coord);
|
var min_distance = geo.aircraft_position().direct_distance_to(explode_coord);
|
||||||
if (min_distance < me.reportDist) {
|
if (min_distance < me.reportDist) {
|
||||||
# hitting oneself :)
|
# hitting oneself :)
|
||||||
var cs = getprop("sim/multiplay/callsign");
|
var cs = damage.processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
cs = size(cs) < 8 ? cs : left(cs,7);
|
|
||||||
var phrase = sprintf("%s %s: %.1f meters from: %s", me.type,event, min_distance, cs);# if we mention ourself then we need to explicit add ourself as author.
|
var phrase = sprintf("%s %s: %.1f meters from: %s", me.type,event, min_distance, cs);# if we mention ourself then we need to explicit add ourself as author.
|
||||||
me.printStats(phrase);
|
me.printStats(phrase);
|
||||||
if (wh_mass > 0) {
|
if (wh_mass > 0) {
|
||||||
@ -4605,7 +4611,7 @@ var AIM = {
|
|||||||
|
|
||||||
me.Tgt = me.tagt;
|
me.Tgt = me.tagt;
|
||||||
|
|
||||||
me.callsign = me.Tgt.get_Callsign();
|
me.callsign = damage.processCallsign(me.Tgt.get_Callsign());
|
||||||
|
|
||||||
settimer(func me.update_lock(), 0.1);
|
settimer(func me.update_lock(), 0.1);
|
||||||
},
|
},
|
||||||
@ -5428,6 +5434,14 @@ var AIM = {
|
|||||||
thread.unlock(mutexETA);
|
thread.unlock(mutexETA);
|
||||||
return retur;
|
return retur;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setModelAdded: func {
|
||||||
|
setprop("ai/models/model-added", me.ai.getPath());
|
||||||
|
},
|
||||||
|
|
||||||
|
setModelRemoved: func {
|
||||||
|
setprop("ai/models/model-removed", me.ai.getPath());
|
||||||
|
},
|
||||||
};
|
};
|
||||||
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0, levels = 3) {
|
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0, levels = 3) {
|
||||||
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -509,10 +509,10 @@ var AIM = {
|
|||||||
if (m.vector_thrust == nil) {
|
if (m.vector_thrust == nil) {
|
||||||
m.vector_thrust = FALSE;
|
m.vector_thrust = FALSE;
|
||||||
}
|
}
|
||||||
if (m.flareResistance == nil) {
|
if (m.flareResistance == nil or !m.gnd_launch) {
|
||||||
m.flareResistance = 0.85;
|
m.flareResistance = 0.85;
|
||||||
}
|
}
|
||||||
if (m.chaffResistance == nil) {
|
if (m.chaffResistance == nil or !m.gnd_launch) {
|
||||||
m.chaffResistance = 0.85;
|
m.chaffResistance = 0.85;
|
||||||
}
|
}
|
||||||
if (m.guidanceLaw == nil) {
|
if (m.guidanceLaw == nil) {
|
||||||
@ -1910,7 +1910,7 @@ var AIM = {
|
|||||||
|
|
||||||
setNewTargetInFlight: func (tagt) {
|
setNewTargetInFlight: func (tagt) {
|
||||||
me.Tgt = tagt;
|
me.Tgt = tagt;
|
||||||
me.callsign = tagt==nil?"Unknown":me.Tgt.get_Callsign();
|
me.callsign = tagt==nil?"Unknown":damage.processCallsign(me.Tgt.get_Callsign());
|
||||||
me.printStatsDetails("Target set to %s", me.callsign);
|
me.printStatsDetails("Target set to %s", me.callsign);
|
||||||
me.newTargetAssigned = tagt==nil?FALSE:TRUE;
|
me.newTargetAssigned = tagt==nil?FALSE:TRUE;
|
||||||
me.t_coord = tagt==nil?nil:me.Tgt.get_Coord();
|
me.t_coord = tagt==nil?nil:me.Tgt.get_Coord();
|
||||||
@ -2543,9 +2543,12 @@ var AIM = {
|
|||||||
|
|
||||||
me.prevGuidance = me.guidance;
|
me.prevGuidance = me.guidance;
|
||||||
|
|
||||||
if (me.counter > -1) {
|
if (me.counter > -1 and !me.ai.getNode("valid").getBoolValue()) {
|
||||||
# TODO: Why is this placed so late? Don't remember.
|
# TODO: Why is this placed so late? Don't remember.
|
||||||
me.ai.getNode("valid").setBoolValue(1);
|
me.ai.getNode("valid").setBoolValue(1);
|
||||||
|
thread.lock(mutexTimer);
|
||||||
|
append(AIM.timerQueue, [me, me.setModelAdded, [], -1]);
|
||||||
|
thread.unlock(mutexTimer);
|
||||||
}
|
}
|
||||||
#############################################################################################################
|
#############################################################################################################
|
||||||
#
|
#
|
||||||
@ -3075,8 +3078,9 @@ var AIM = {
|
|||||||
me.chaffLast = me.chaffNumber;
|
me.chaffLast = me.chaffNumber;
|
||||||
me.chaffTime = getprop("sim/time/elapsed-sec");
|
me.chaffTime = getprop("sim/time/elapsed-sec");
|
||||||
me.aspectDeg = me.aspectToExhaust(me.coord, me.Tgt) / 180;# 0 = viewing engine, 1 = front
|
me.aspectDeg = me.aspectToExhaust(me.coord, me.Tgt) / 180;# 0 = viewing engine, 1 = front
|
||||||
|
me.semi = me.guidance == "semi-radar"?0.5:1;
|
||||||
me.chaffLock = rand() < (1-me.chaffResistance - ((1-me.chaffResistance) * 0.5 * me.aspectDeg));# 50% less chance to be fooled if front aspect
|
me.chaffChance = (1-me.chaffResistance)*me.semi;
|
||||||
|
me.chaffLock = rand() < (me.chaffChance - (me.chaffChance * 0.5 * me.aspectDeg));# 50% less chance to be fooled if front aspect
|
||||||
|
|
||||||
if (me.chaffLock == TRUE) {
|
if (me.chaffLock == TRUE) {
|
||||||
me.printStats(me.type~": Missile locked on chaff from "~me.callsign);
|
me.printStats(me.type~": Missile locked on chaff from "~me.callsign);
|
||||||
@ -4094,6 +4098,9 @@ var AIM = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
me.ai.getNode("valid", 1).setBoolValue(0);
|
me.ai.getNode("valid", 1).setBoolValue(0);
|
||||||
|
thread.lock(mutexTimer);
|
||||||
|
append(AIM.timerQueue, [me, me.setModelRemoved, [], -1]);
|
||||||
|
thread.unlock(mutexTimer);
|
||||||
if (event == "exploded" and !me.inert and wh_mass > 0) {
|
if (event == "exploded" and !me.inert and wh_mass > 0) {
|
||||||
me.animate_explosion(hitGround);
|
me.animate_explosion(hitGround);
|
||||||
me.explodeSound = TRUE;
|
me.explodeSound = TRUE;
|
||||||
@ -4120,7 +4127,7 @@ var AIM = {
|
|||||||
me.printStats(phrase);
|
me.printStats(phrase);
|
||||||
|
|
||||||
if(getprop("payload/armament/msg") and wh_mass > 0){
|
if(getprop("payload/armament/msg") and wh_mass > 0){
|
||||||
var cs = me.testMe.get_Callsign();
|
var cs = damage.processCallsign(me.testMe.get_Callsign());
|
||||||
var cc = me.testMe.get_Coord();
|
var cc = me.testMe.get_Coord();
|
||||||
thread.lock(mutexTimer);
|
thread.lock(mutexTimer);
|
||||||
append(AIM.timerQueue, [AIM, AIM.notifyHit, [explode_coord.alt() - cc.alt(),min_distance,cs,explode_coord.course_to(cc),"mhit1",me.typeID, me.typeLong,0], -1]);
|
append(AIM.timerQueue, [AIM, AIM.notifyHit, [explode_coord.alt() - cc.alt(),min_distance,cs,explode_coord.course_to(cc),"mhit1",me.typeID, me.typeLong,0], -1]);
|
||||||
@ -4134,8 +4141,7 @@ var AIM = {
|
|||||||
var min_distance = geo.aircraft_position().direct_distance_to(explode_coord);
|
var min_distance = geo.aircraft_position().direct_distance_to(explode_coord);
|
||||||
if (min_distance < me.reportDist) {
|
if (min_distance < me.reportDist) {
|
||||||
# hitting oneself :)
|
# hitting oneself :)
|
||||||
var cs = getprop("sim/multiplay/callsign");
|
var cs = damage.processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
cs = size(cs) < 8 ? cs : left(cs,7);
|
|
||||||
var phrase = sprintf("%s %s: %.1f meters from: %s", me.type,event, min_distance, cs);# if we mention ourself then we need to explicit add ourself as author.
|
var phrase = sprintf("%s %s: %.1f meters from: %s", me.type,event, min_distance, cs);# if we mention ourself then we need to explicit add ourself as author.
|
||||||
me.printStats(phrase);
|
me.printStats(phrase);
|
||||||
if (wh_mass > 0) {
|
if (wh_mass > 0) {
|
||||||
@ -4605,7 +4611,7 @@ var AIM = {
|
|||||||
|
|
||||||
me.Tgt = me.tagt;
|
me.Tgt = me.tagt;
|
||||||
|
|
||||||
me.callsign = me.Tgt.get_Callsign();
|
me.callsign = damage.processCallsign(me.Tgt.get_Callsign());
|
||||||
|
|
||||||
settimer(func me.update_lock(), 0.1);
|
settimer(func me.update_lock(), 0.1);
|
||||||
},
|
},
|
||||||
@ -5428,6 +5434,14 @@ var AIM = {
|
|||||||
thread.unlock(mutexETA);
|
thread.unlock(mutexETA);
|
||||||
return retur;
|
return retur;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setModelAdded: func {
|
||||||
|
setprop("ai/models/model-added", me.ai.getPath());
|
||||||
|
},
|
||||||
|
|
||||||
|
setModelRemoved: func {
|
||||||
|
setprop("ai/models/model-removed", me.ai.getPath());
|
||||||
|
},
|
||||||
};
|
};
|
||||||
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0, levels = 3) {
|
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0, levels = 3) {
|
||||||
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
||||||
|
@ -341,8 +341,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -373,8 +372,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1237,6 +1235,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -341,8 +341,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -373,8 +372,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1237,6 +1235,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
@ -347,8 +347,7 @@ var DamageRecipient =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Missile approach warning:
|
# Missile approach warning:
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
if (notification.RemoteCallsign != callsign) return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
if (!radarOn) return emesary.Transmitter.ReceiptStatus_OK;# this should be little more complex later
|
||||||
var heading = getprop("orientation/heading-deg");
|
var heading = getprop("orientation/heading-deg");
|
||||||
@ -379,8 +378,7 @@ var DamageRecipient =
|
|||||||
# debug.dump(notification);
|
# debug.dump(notification);
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
var callsign = getprop("sim/multiplay/callsign");
|
var callsign = processCallsign(getprop("sim/multiplay/callsign"));
|
||||||
callsign = size(callsign) < 8 ? callsign : left(callsign,7);
|
|
||||||
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
if (notification.RemoteCallsign == callsign and getprop("payload/armament/msg") == 1) {
|
||||||
#damage enabled and were getting hit
|
#damage enabled and were getting hit
|
||||||
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
if (m28_auto) mig28.engagedBy(notification.Callsign);
|
||||||
@ -1243,6 +1241,20 @@ var printDamageLog = func {
|
|||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var processCallsign = func (callsign) {
|
||||||
|
# Convert the callsign to one that emesary can work with.
|
||||||
|
var l = size(callsign);
|
||||||
|
callsign = l < 8?callsign:left(callsign, 7);
|
||||||
|
var newCallsign = "";
|
||||||
|
for(var ii = 0; ii < l; ii += 1) {
|
||||||
|
var ev = emesary.TransferString.getalphanumericchar(substr(callsign,ii,1));
|
||||||
|
if (ev != nil) {
|
||||||
|
newCallsign ~= ev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newCallsign;
|
||||||
|
}
|
||||||
|
|
||||||
#TODO testing:
|
#TODO testing:
|
||||||
|
|
||||||
var writeDamageLog = func {
|
var writeDamageLog = func {
|
||||||
|
Loading…
Reference in New Issue
Block a user