public static bool san_enter_combat_backup_with_beacon_shit(GameObject attachee, GameObject triggerer) { Livonya.tag_strategy(attachee); if (attachee.GetNameId() == 14811) // The Beacon { attachee.SetScriptId(ObjScriptEvent.EndCombat, 446); // end combat round script attachee.FloatMesFileLine("mes/script_activated.mes", 13, TextFloaterColor.Red); return(RunDefault); } if ((!ScriptDaemon.can_see_party(attachee) && ScriptDaemon.is_far_from_party(attachee, 10)) || ScriptDaemon.is_far_from_party(attachee, 40)) { if (ScriptDaemon.is_far_from_party(attachee, 70)) { var joe = Utilities.party_closest(attachee); ScriptDaemon.encroach(attachee, joe); } attachee.SetInt(obj_f.critter_strategy, 119); // Seek out low ac beacon AttachParticles("sp-Hold Person", attachee); if (ScriptDaemon.get_v("Beacon_Active") == 0) { var top_path = 0; var bottom_path = 0; foreach (var pc in GameSystems.Party.PartyMembers) { if (ScriptDaemon.within_rect_by_corners(pc, 467, 360, 467, 388) && !pc.IsUnconscious()) { top_path = top_path + 1; } if (ScriptDaemon.within_rect_by_corners(pc, 504, 355, 504, 385) && !pc.IsUnconscious()) { bottom_path = bottom_path + 1; } } int primary_beacon_x; int primary_beacon_y; int tertiary_beacon_x; int tertiary_beacon_y; if (top_path > bottom_path) { primary_beacon_x = 470; primary_beacon_y = 388; tertiary_beacon_x = 492; tertiary_beacon_y = 387; } else { primary_beacon_x = 492; primary_beacon_y = 387; tertiary_beacon_x = 470; tertiary_beacon_y = 388; } var beacon_loc = new locXY(primary_beacon_x, primary_beacon_y); var beacon3_loc = new locXY(tertiary_beacon_x, tertiary_beacon_y); var beacon = GameSystems.MapObject.CreateObject(14811, beacon_loc); beacon.Move(new locXY(470, 388), 0, 0); beacon.SetInt(obj_f.npc_ac_bonus, -50); beacon.SetBaseStat(Stat.dexterity, -70); // causes problems at end of round, or does it? // beacon.object_flag_set(OF_DONTDRAW) # this causes combat to lag at the beacon's turn beacon.SetObjectFlag(ObjectFlag.CLICK_THROUGH); beacon.AddToInitiative(); beacon.SetInitiative(-20); UiSystems.Combat.Initiative.UpdateIfNeeded(); beacon.SetScriptId(ObjScriptEvent.EndCombat, 446); // end combat round // beacon.scripts[14] = 446 # exit combat AttachParticles("sp-hold person", beacon); var beacon2 = GameSystems.MapObject.CreateObject(14811, new locXY(483, 395)); beacon2.Move(new locXY(483, 395), 0, 0); beacon2.SetInt(obj_f.npc_ac_bonus, -40); // beacon2.object_flag_set(OF_DONTDRAW) beacon2.SetObjectFlag(ObjectFlag.CLICK_THROUGH); beacon2.AddToInitiative(); beacon2.SetInitiative(-21); UiSystems.Combat.Initiative.UpdateIfNeeded(); AttachParticles("sp-hold person", beacon2); var beacon3 = GameSystems.MapObject.CreateObject(14811, beacon3_loc); beacon3.Move(beacon3_loc, 0, 0); beacon3.SetInt(obj_f.npc_ac_bonus, -30); // beacon3.object_flag_set(OF_DONTDRAW) beacon3.SetObjectFlag(ObjectFlag.CLICK_THROUGH); beacon3.AddToInitiative(); beacon3.SetInitiative(-23); UiSystems.Combat.Initiative.UpdateIfNeeded(); AttachParticles("sp-hold person", beacon3); ScriptDaemon.set_v("Beacon_Active", 3); } } else if (ScriptDaemon.is_far_from_party(attachee, 75)) { var joe = Utilities.party_closest(attachee); ScriptDaemon.encroach(attachee, joe); } else { Livonya.get_melee_strategy(attachee); } // Tried changing their standpoint midfight, didn't work. // attachee.standpoint_set(STANDPOINT_DAY, attachee.obj_get_int(obj_f_npc_pad_i_3) - 342 + 500) // attachee.standpoint_set(STANDPOINT_NIGHT, attachee.obj_get_int(obj_f_npc_pad_i_3) - 342 + 500) // if attachee.obj_get_int(obj_f_npc_pad_i_3) == 361 or attachee.obj_get_int(obj_f_npc_pad_i_3) == 362: #sentry standpoints // hl(attachee) // xx = 482 // yy = 417 // for npc in game.obj_list_vicinity(location_from_axis(xx,yy), OLC_NPC ): // if npc.leader_get() == OBJ_HANDLE_NULL: // npc.standpoint_set(STANDPOINT_DAY, npc.obj_get_int(obj_f_npc_pad_i_3) - 342 + 500) // npc.standpoint_set(STANDPOINT_NIGHT, npc.obj_get_int(obj_f_npc_pad_i_3) - 342 + 500) // npc.npc_flag_set(ONF_KOS) // npc.npc_flag_unset(ONF_KOS_OVERRIDE) return(RunDefault); }